{"version":3,"sources":["webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/function-bind.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/core-js/internals/array-species-constructor.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/internals/string-pad.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///./node_modules/cannon-es/dist/cannon-es.js","webpack:///./node_modules/core-js/internals/string-repeat.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/core-js/internals/iterator-close.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/stats.js/build/stats.min.js","webpack:///./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/index.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/@ethersproject/signing-key/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/k-progress-v3/dist/k-progress.umd.min.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/vue-final-modal/dist/VueFinalModal.esm.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/host-report-errors.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/modules/es.reflect.construct.js","webpack:///./node_modules/@meforma/vue-toaster/src/Toaster.vue?9aa6","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@ethersproject/bytes/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/bytes/lib.esm/index.js","webpack:///./node_modules/vuex/dist/vuex.esm-browser.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/to-string.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/three/build/three.module.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/core-js/internals/engine-is-browser.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/vue-plugin-load-script/index.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/vue-router/dist/vue-router.esm-bundler.js","webpack:///./node_modules/@ethersproject/random/lib.esm/random.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/core-js/internals/object-to-array.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack:///./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack:///./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack:///./node_modules/vue/dist/vue.runtime.esm-bundler.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/modules/es.string.pad-end.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/internals/string-pad-webkit-bug.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/scrypt-js/scrypt.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/modules/es.promise.finally.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/env.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/@meforma/vue-toaster/src/Toaster.vue","webpack:///./node_modules/@meforma/vue-toaster/src/helpers/remove-element.js","webpack:///./node_modules/@meforma/vue-toaster/src/helpers/timer.js","webpack:///./node_modules/@meforma/vue-toaster/src/defaults/positions.js","webpack:///./node_modules/@meforma/vue-toaster/src/helpers/event-bus.js","webpack:///./node_modules/@meforma/vue-toaster/src/Toaster.vue?8d0d","webpack:///./node_modules/@meforma/vue-toaster/src/helpers/mount-component.js","webpack:///./node_modules/@meforma/vue-toaster/src/api.js","webpack:///./node_modules/@meforma/vue-toaster/src/index.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/@ethersproject/json-wallets/node_modules/aes-js/index.js","webpack:///./node_modules/@ethersproject/bignumber/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/caf/src/caf.src.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/core-js/internals/microtask.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/modules/es.object.keys.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/@vue/devtools-api/lib/esm/const.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/@ethersproject/keccak256/node_modules/js-sha3/src/sha3.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/bech32/index.js","webpack:///./node_modules/@ethersproject/bignumber/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/bignumber/lib.esm/bignumber.js","webpack:///./node_modules/@ethersproject/properties/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/properties/lib.esm/index.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/abstract-coder.js","webpack:///./node_modules/@ethersproject/keccak256/lib.esm/index.js","webpack:///./node_modules/@ethersproject/rlp/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/rlp/lib.esm/index.js","webpack:///./node_modules/@ethersproject/address/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/address/lib.esm/index.js","webpack:///./node_modules/@ethersproject/strings/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/strings/lib.esm/utf8.js","webpack:///./node_modules/@ethersproject/hash/lib.esm/id.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/address.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/anonymous.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/array.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/boolean.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/bytes.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/fixed-bytes.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/null.js","webpack:///./node_modules/@ethersproject/constants/lib.esm/bignumbers.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/number.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/string.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/coders/tuple.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/fragments.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/abi-coder.js","webpack:///./node_modules/@ethersproject/abi/lib.esm/interface.js","webpack:///./node_modules/@ethersproject/abstract-provider/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/abstract-provider/lib.esm/index.js","webpack:///./node_modules/@ethersproject/abstract-signer/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/abstract-signer/lib.esm/index.js","webpack:///./node_modules/@ethersproject/signing-key/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/signing-key/lib.esm/index.js","webpack:///./node_modules/@ethersproject/transactions/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/transactions/lib.esm/index.js","webpack:///./node_modules/@ethersproject/contracts/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/contracts/lib.esm/index.js","webpack:///./node_modules/@ethersproject/bignumber/lib.esm/fixednumber.js","webpack:///./node_modules/@ethersproject/hash/lib.esm/message.js","webpack:///./node_modules/@ethersproject/hash/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/hash/lib.esm/typed-data.js","webpack:///./node_modules/@ethersproject/basex/lib.esm/index.js","webpack:///./node_modules/@ethersproject/sha2/lib.esm/types.js","webpack:///./node_modules/@ethersproject/sha2/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/sha2/lib.esm/sha2.js","webpack:///./node_modules/@ethersproject/pbkdf2/lib.esm/pbkdf2.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/wordlist.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-cz.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-en.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-es.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-fr.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-ja.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-ko.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-it.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/lang-zh.js","webpack:///./node_modules/@ethersproject/wordlists/lib.esm/wordlists.js","webpack:///./node_modules/@ethersproject/hdnode/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/hdnode/lib.esm/index.js","webpack:///./node_modules/@ethersproject/json-wallets/lib.esm/utils.js","webpack:///./node_modules/@ethersproject/json-wallets/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/json-wallets/lib.esm/keystore.js","webpack:///./node_modules/@ethersproject/json-wallets/lib.esm/crowdsale.js","webpack:///./node_modules/@ethersproject/json-wallets/lib.esm/inspect.js","webpack:///./node_modules/@ethersproject/json-wallets/lib.esm/index.js","webpack:///./node_modules/@ethersproject/wallet/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/wallet/lib.esm/index.js","webpack:///./node_modules/@ethersproject/constants/lib.esm/addresses.js","webpack:///./node_modules/@ethersproject/constants/lib.esm/hashes.js","webpack:///./node_modules/@ethersproject/constants/lib.esm/strings.js","webpack:///./node_modules/@ethersproject/networks/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/networks/lib.esm/index.js","webpack:///./node_modules/@ethersproject/strings/lib.esm/idna.js","webpack:///./node_modules/@ethersproject/hash/lib.esm/namehash.js","webpack:///./node_modules/@ethersproject/base64/lib.esm/base64.js","webpack:///./node_modules/@ethersproject/web/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/web/lib.esm/geturl.js","webpack:///./node_modules/@ethersproject/web/lib.esm/index.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/formatter.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/base-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/json-rpc-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/ws.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/websocket-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/url-json-rpc-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/alchemy-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/cloudflare-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/etherscan-provider.js","webpack:///./node_modules/@ethersproject/random/lib.esm/shuffle.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/fallback-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/ipc-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/infura-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/json-rpc-batch-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/nodesmith-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/pocket-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/web3-provider.js","webpack:///./node_modules/@ethersproject/providers/lib.esm/index.js","webpack:///./node_modules/@ethersproject/solidity/lib.esm/index.js","webpack:///./node_modules/@ethersproject/strings/lib.esm/bytes32.js","webpack:///./node_modules/@ethersproject/units/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/units/lib.esm/index.js","webpack:///./node_modules/ethers/lib.esm/_version.js","webpack:///./node_modules/ethers/lib.esm/ethers.js","webpack:///./node_modules/ethers/lib.esm/index.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/internals/promise-resolve.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/internals/perform.js","webpack:///./node_modules/core-js/modules/es.promise.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/vue-concurrency/dist/vue3/vue-concurrency.module.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/core-js/internals/new-promise-capability.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/native-promise-constructor.js","webpack:///./node_modules/@ethersproject/random/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/logger/lib.esm/_version.js","webpack:///./node_modules/@ethersproject/logger/lib.esm/index.js"],"names":["wellKnownSymbol","TO_STRING_TAG","test","module","exports","String","aFunction","fn","that","length","undefined","call","a","b","c","apply","arguments","isObject","slice","factories","construct","C","argsLength","args","list","i","Function","join","bind","this","partArgs","boundFunction","concat","prototype","toIndexedObject","$getOwnPropertyNames","f","toString","windowNames","window","Object","getOwnPropertyNames","getWindowNames","it","error","_unsupportedIterableToArray","o","minLen","arrayLikeToArray","n","constructor","name","Array","from","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toPropertyKey","has","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","O","P","$","$values","values","target","stat","utils","SHA256","SHA224","h","inherits","blockSize","outSize","hmacStrength","padLength","_digest","enc","toHex32","split32","isArray","SPECIES","originalArray","toObject","floor","Math","replace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","str","position","captures","namedCaptures","replacement","tailPos","m","symbols","match","ch","capture","charAt","toLength","repeat","requireObjectCoercible","ceil","createMethod","IS_END","$this","maxLength","fillString","fillLen","stringFiller","S","stringLength","fillStr","intMaxLength","start","end","fails","createElement","defineProperty","get","global","$RegExp","RegExp","re","exec","groups","Mat3","elements","e","vector","x","y","z","Vec3","v","s","matrix","A","B","T","a11","a12","a13","a21","a22","a23","a31","a32","a33","b11","b12","b13","b21","b22","b23","b31","b32","b33","t","nr","nc","eqns","j","push","k","np","kp","p","multiplier","isNaN","Infinity","row","column","value","r","sep","reverse_eqns","q","w","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","M","tmp","vx","vy","vz","sqrt","invN","ninv","dot","px","py","pz","scalar","t1","t2","norm","Vec3_tangents_n","inorm","set","randVec","Vec3_tangents_randVec","abs","cross","precision","negate","antip_neg","almostEquals","ZERO","UNIT_X","UNIT_Y","UNIT_Z","AABB","options","lowerBound","upperBound","copy","points","quaternion","skinSize","l","u","vmult","tmp$1","vadd","aabb","min","max","l1","u1","l2","u2","overlapsX","overlapsY","overlapsZ","d","g","frame","corners","transformIntoFrame_corners","getCorners","corner","pointToLocal","setFromPoints","pointToWorld","ray","direction","dirFracX","dirFracY","dirFracZ","t3","t4","t5","t6","tmin","tmax","ArrayCollisionMatrix","bi","bj","index","temp","EventTarget","_listeners","type","listener","listeners","includes","indexOf","splice","event","listenerArray","Quaternion","angle","sin","cos","targetAxis","normalize","acos","isAntiparallelTo","sfv_t1","sfv_t2","tangents","setFromAxisAngle","PI","quat","ax","ay","az","aw","bx","by","bz","bw","conjugate","inorm2","qx","qy","qz","qw","ix","iy","iz","iw","order","heading","attitude","bank","atan2","sqx","sqy","sqz","asin","Error","c1","c2","c3","s1","s2","s3","toQuat","omega","cosom","sinom","scale0","scale1","angularVelocity","dt","angularFactor","half_dt","SHAPE_TYPES","SPHERE","PLANE","BOX","COMPOUND","CONVEXPOLYHEDRON","HEIGHTFIELD","PARTICLE","CYLINDER","TRIMESH","Shape","id","boundingSphereRadius","collisionResponse","collisionFilterGroup","collisionFilterMask","material","body","idCounter","mass","pos","types","Transform","worldPoint","result","pointToLocalFrame","localPoint","pointToWorldFrame","localVector","vsub","tmpQuat$1","worldVector","ConvexPolyhedron","props","vertices","faces","normals","axes","super","faceNormals","worldVertices","worldVerticesNeedsUpdate","worldFaceNormals","worldFaceNormalsNeedsUpdate","uniqueAxes","uniqueEdges","computeNormals","updateBoundingSphereRadius","computeEdges","edges","edge","face","numVertices","found","clone","getFaceNormal","vertex","console","warn","va","vb","vc","computeNormal","cb","ab","isZero","posA","quatA","hullB","posB","quatB","separatingNormal","minDist","maxDist","WorldNormal","closestFaceB","dmax","Number","MAX_VALUE","worldVertsB1","worldb","clipFaceAgainstHull","faceListA","faceListB","faceANormalWS3","Worldnormal1","deltaC","worldEdge0","worldEdge1","Cross","dmin","hullA","testSepAxis","numFacesA","fi","numFacesB","e0","e1","almostZero","dist","axis","project","maxminA","maxminB","maxA","minA","maxB","minB","d0","d1","depth","aabbmax","aabbmin","computeLocalAABB","face_i","faceANormalWS","edge0","WorldEdge0","worldPlaneAnormal1","planeNormalWS1","worldA1","localPlaneNormal","planeNormalWS","worldVertsB2","pVtxIn","pVtxOut","closestFaceA","polyA","connectedFaces","numVerticesA","otherFace","localPlaneEq","getPlaneConstantOfFace","planeEqWS","clipFaceAgainstPlane","shift","log","point","normal","inVertices","outVertices","planeNormal","planeConstant","n_dot_first","n_dot_last","numVerts","firstVertex","lastVertex","vi","newv","lerp","verts","worldVerts","N","worldNormals","max2","norm2","lengthSquared","minx","miny","minz","maxx","maxy","maxz","tempWorldVertex","scale","offset","pointInside","getAveragePointLocal","vToP","r1","vToPointInside","r2","shape","localAxis","project_localAxis","localOrigin","project_localOrigin","vs","setZero","vectorToLocalFrame","add","val","Box","halfExtents","convexPolyhedronRepresentation","updateConvexPolyhedronRepresentation","sx","sy","sz","V","calculateInertia","sixTargetVectors","sides","ex","callback","worldCornerTempPos","worldCornersTemp","wc","BODY_TYPES","DYNAMIC","STATIC","KINEMATIC","BODY_SLEEP_STATES","AWAKE","SLEEPY","SLEEPING","Body","world","preStep","postStep","vlambda","previousPosition","interpolatedPosition","initPosition","velocity","initVelocity","force","invMass","linearDamping","allowSleep","sleepState","sleepSpeedLimit","sleepTimeLimit","timeLastSleepy","wakeUpAfterNarrowphase","torque","initQuaternion","previousQuaternion","interpolatedQuaternion","initAngularVelocity","shapes","shapeOffsets","shapeOrientations","inertia","invInertia","invInertiaWorld","invMassSolve","invInertiaSolve","invInertiaWorldSolve","fixedRotation","angularDamping","linearFactor","aabbNeedsUpdate","boundingRadius","wlambda","isTrigger","Boolean","addShape","updateMassProperties","prevState","dispatchEvent","wakeupEvent","time","speedSquared","speedLimitSquared","sleepyEvent","wakeUp","sleep","sleepEvent","_offset","_orientation","orientation","updateBoundingRadius","radius","tmpVec","tmpQuat","bodyQuat","shapeAABB","updateAABB_shapeAABB","mult","calculateWorldAABB","extend","I","m1","uiw_m1","m2","uiw_m2","setRotationFromQuaternion","transpose","mmult","relativePoint","rotForce","Body_applyForce_rotForce","localForce","worldForce","Body_applyLocalForce_worldForce","relativePointWorld","Body_applyLocalForce_relativePointWorld","vectorToWorldFrame","applyForce","impulse","velo","Body_applyImpulse_velo","rotVelo","Body_applyImpulse_rotVelo","localImpulse","worldImpulse","Body_applyLocalImpulse_worldImpulse","Body_applyLocalImpulse_relativePoint","applyImpulse","Body_updateMassProperties_halfExtents","fixed","updateAABB","updateInertiaWorld","quatNormalize","quatNormalizeFast","angularVelo","iMdt","tx","ty","tz","integrate","normalizeFast","COLLIDE_EVENT_NAME","Broadphase","useBoundingBoxes","dirty","p1","p2","bodyA","bodyB","pairs1","pairs2","doBoundingBoxBroadphase","doBoundingSphereBroadphase","Broadphase_collisionPairs_r","boundingRadiusSum2","overlaps","Broadphase_makePairsUnique_temp","Broadphase_makePairsUnique_p1","Broadphase_makePairsUnique_p2","id1","id2","key","keys","pop","pairIndex","sa","sb","pow","NaiveBroadphase","bodies","needBroadphaseCollision","intersectionTest","RaycastResult","rayFromWorld","rayToWorld","hitNormalWorld","hitPointWorld","hasHit","hitFaceIndex","distance","shouldStop","_Shape$types$SPHERE","_Shape$types$PLANE","_Shape$types$BOX","_Shape$types$CYLINDER","_Shape$types$CONVEXPO","_Shape$types$HEIGHTFI","_Shape$types$TRIMESH","RAY_MODES","CLOSEST","ANY","ALL","Ray","_intersectSphere","_intersectPlane","_intersectBox","_intersectConvex","_intersectHeightfield","_intersectTrimesh","to","checkCollisionResponse","skipBackfaces","mode","reset","updateDirection","getAABB","tmpAABB$1","tmpArray","broadphase","aabbQuery","intersectBodies","xi","intersectBody_xi","qi","intersectBody_qi","intersectShape","intersectBody","distanceFromIntersection","intersectMethod","box","reportedShape","worldNormal","len","planeToFrom","planeToTo","distanceTo","n_dot_dir","planePointToFrom","dir_scaled_with_t","reportIntersection","data","elementSize","localRay","intersectHeightfield_localRay","intersectHeightfield_index","iMinX","iMinY","iMaxX","iMaxY","getIndexOfPosition","getAabbAtIndex","overlapsRay","getConvexTrianglePillar","pillarOffset","worldPillarOffset","pillarConvex","intersectConvexOptions","sphere","delta","intersectionPoint","Ray_intersectSphere_intersectionPoint","Ray_intersectSphere_normal","d2","intersectConvex_normal","intersectConvex_vector","faceList","fromToDistance","Nfaces","faceNormal","intersectPoint","pointInTriangle","mesh","intersectTrimesh_normal","triangles","intersectTrimesh_triangles","treeTransform","intersectTrimesh_treeTransform","localDirection","intersectTrimesh_localDirection","localFrom","intersectTrimesh_localFrom","localTo","intersectTrimesh_localTo","worldIntersectPoint","intersectTrimesh_worldIntersectPoint","intersectTrimesh_worldNormal","indices","fromToDistanceSquared","distanceSquared","tree","rayQuery","trianglesIndex","getNormal","getVertex","squaredDistance","v0","v1","v2","dot00","dot01","dot02","dot11","dot12","intersect","Utils","defaults","Constraint","equations","collideConnected","wakeUpBodies","eqs","enabled","JacobianElement","spatial","rotational","element","Equation","minForce","maxForce","si","sj","eps","jacobianElementA","jacobianElementB","setSpookParams","stiffness","relaxation","timeStep","GW","computeGW","Gq","computeGq","GiMf","computeGiMf","GA","GB","xj","vj","wi","wj","multiplyVectors","ti","fj","tj","invMassi","invMassj","iMfi","iMfj","invIi_vmult_taui","invIj_vmult_tauj","invIi","invIj","deltalambda","addToWlambda_temp","addScaledVector","computeGiMGt","ContactEquation","restitution","ri","rj","ni","rixn","ContactEquation_computeB_temp1","rjxn","ContactEquation_computeB_temp2","penetrationVec","ContactEquation_computeB_temp3","ePlusOne","ContactEquation_getImpactVelocityAlongNormal_vi","ContactEquation_getImpactVelocityAlongNormal_vj","ContactEquation_getImpactVelocityAlongNormal_xi","ContactEquation_getImpactVelocityAlongNormal_xj","relVel","ContactEquation_getImpactVelocityAlongNormal_relVel","getVelocityAtWorldPoint","FrictionEquation","slipForce","rixt","FrictionEquation_computeB_temp1","rjxt","FrictionEquation_computeB_temp2","ContactMaterial","materials","friction","contactEquationStiffness","contactEquationRelaxation","frictionEquationStiffness","frictionEquationRelaxation","Material","Plane","worldNormalNeedsUpdate","tempNormal","maxVal","Solver","eq","GSSolver","iterations","tolerance","iter","maxIter","tolSquared","Neq","Nbodies","invC","deltalambdaTot","GWlambda","lambdaj","updateSolveMassProperties","invCs","GSSolver_solve_invCs","Bs","GSSolver_solve_Bs","lambda","GSSolver_solve_lambda","computeB","computeC","computeGWlambda","addToWlambda","vmul","invDt","Pool","objects","Nargs","constructObject","size","Vec3Pool","_COLLISION_TYPES$sphe","_COLLISION_TYPES$sphe2","_COLLISION_TYPES$boxB","_COLLISION_TYPES$sphe3","_COLLISION_TYPES$plan","_COLLISION_TYPES$conv","_COLLISION_TYPES$sphe4","_COLLISION_TYPES$plan2","_COLLISION_TYPES$boxC","_COLLISION_TYPES$sphe5","_COLLISION_TYPES$boxH","_COLLISION_TYPES$conv2","_COLLISION_TYPES$sphe6","_COLLISION_TYPES$plan3","_COLLISION_TYPES$boxP","_COLLISION_TYPES$conv3","_COLLISION_TYPES$cyli","_COLLISION_TYPES$sphe7","_COLLISION_TYPES$plan4","_COLLISION_TYPES$boxC2","_COLLISION_TYPES$conv4","_COLLISION_TYPES$heig","_COLLISION_TYPES$part","_COLLISION_TYPES$sphe8","_COLLISION_TYPES$plan5","COLLISION_TYPES","sphereSphere","spherePlane","boxBox","sphereBox","planeBox","convexConvex","sphereConvex","planeConvex","boxConvex","sphereHeightfield","boxHeightfield","convexHeightfield","sphereParticle","planeParticle","boxParticle","convexParticle","cylinderCylinder","sphereCylinder","planeCylinder","boxCylinder","convexCylinder","heightfieldCylinder","particleCylinder","sphereTrimesh","planeTrimesh","Narrowphase","contactPointPool","frictionEquationPool","frictionResult","v3pool","currentContactMaterial","enableFrictionReduction","defaultContactMaterial","overrideShapeA","overrideShapeB","cm","matA","matB","contactEquation","outArray","shapeA","shapeB","mug","gravity","reducedMass","pool","numContacts","createFrictionEquationsFromContact","f1","f2","averageNormal","averageContactPointA","averageContactPointB","invNumContacts","oldcontacts","frictionPool","tmpQuat1","qj","tmpQuat2","tmpVec1","tmpVec2","bodyContactMaterial","getContactMaterial","justTest","shapeContactMaterial","resolverIndex","resolver","retval","shapeOverlapKeeper","bodyOverlapKeeper","rsi","rsj","contactEq","createContactEquation","point_on_plane_to_sphere","plane_to_sphere_ortho","sphereBox_sides","box_to_sphere","getSideNormals","R","side_ns","sphereBox_side_ns","side_ns1","sphereBox_side_ns1","side_ns2","sphereBox_side_ns2","side_h","side_penetrations","side_dot1","side_dot2","side_distance","idx","nsides","ns","sphereBox_ns","ns1","sphereBox_ns1","ns2","sphereBox_ns2","h1","h2","dot1","dot2","sphere_to_corner","sphereBox_sphere_to_corner","release","edgeTangent","edgeCenter","orthogonal","Nsides","orthonorm","tdist","ndist","res","sepAxis","convexConvex_sepAxis","findSeparatingAxis","convexConvex_q","clipAgainstHull","createFrictionFromAverage","convex_to_sphere","worldCorner","sphereConvex_worldCorner","sphereConvex_sphereToCorner","nfaces","sphereConvex_worldNormal","sphereConvex_worldPoint","worldSpherePointClosestToPlane","sphereConvex_worldSpherePointClosestToPlane","sphereConvex_penetrationVec","penetration","worldPointToSphere","sphereConvex_sphereToWorldPoint","faceVerts","Nverts","worldVertex","pointInPolygon","penetrationVec2","penetrationSpherePoint","Nfaceverts","sphereConvex_edge","edgeUnit","sphereConvex_edgeUnit","unit","v1_to_xi","xi_to_p","planeShape","convexShape","planePosition","convexPosition","planeQuat","convexQuat","planeBody","convexBody","planeConvex_v","planeConvex_normal","relpos","planeConvex_relpos","projected","planeConvex_projected","sphereShape","hfShape","spherePos","hfPos","sphereQuat","hfQuat","sphereBody","hfBody","sphereHeightfield_tmp2","localSpherePos","sphereHeightfield_tmp1","minMax","getRectMinMax","numContactsBefore","intersecting","convexPos","convexHeightfield_tmp2","convexHeightfield_faceList","localConvexPos","convexHeightfield_tmp1","particleSphere_normal","particlePlane_normal","particlePlane_relpos","particlePlane_projected","penetratedFaceIndex","penetratedFaceNormal","convexParticle_penetratedFaceNormal","worldPenetrationVec","convexParticle_worldPenetrationVec","minPenetration","local","convexParticle_local","cqj","pointIsInside","computeWorldVertices","computeWorldFaceNormals","convexParticle_vertexToParticle","trimeshShape","trimeshPos","trimeshQuat","trimeshBody","edgeVertexA","sphereTrimesh_edgeVertexA","edgeVertexB","sphereTrimesh_edgeVertexB","edgeVector","sphereTrimesh_edgeVector","edgeVectorUnit","sphereTrimesh_edgeVectorUnit","sphereTrimesh_localSpherePos","sphereTrimesh_tmp","localSphereAABB","sphereTrimesh_localSphereAABB","sphereTrimesh_v2","sphereTrimesh_relpos","sphereTrimesh_triangles","sphereRadius","getTrianglesInAABB","sphereTrimesh_v","radiusSquared","positionAlongEdgeB","positionAlongEdgeA","sphereTrimesh_va","sphereTrimesh_vb","sphereTrimesh_vc","sphereTrimesh_normal","getTriangleVertices","planePos","planeTrimesh_normal","planeTrimesh_relpos","planeTrimesh_projected","pointInPolygon_edge","pointInPolygon_edge_x_normal","pointInPolygon_vtp","positiveResult","edge_x_normal","vertex_to_p","OverlapKeeper","current","previous","getKey","additions","removals","al","bl","keyA","unpackAndPush","keyB","array","TupleDictionary","World","contacts","frictionEquations","quatNormalizeSkip","stepnumber","default_dt","nextId","hasActiveBodies","solver","constraints","narrowphase","collisionMatrix","collisionMatrixPrevious","contactmaterials","contactMaterialTable","defaultMaterial","doProfiling","profile","accumulator","subsystems","addBodyEvent","removeBodyEvent","idToBodyMap","solve","makeContactConstraints","setWorld","tick","raycastClosest","raycastAll","tmpRay","intersectWorld","setNumObjects","cmat","timeSinceLastCalled","maxSubSteps","internalStep","t0","performance","now","substeps","slerp","World_step_p1","World_step_p2","numObjects","profilingStart","World_step_frictionEquationPool","gx","gy","gz","Nsubsystems","update","collisionPairs","Nconstraints","collisionMatrixTick","World_step_oldContacts","NoldContacts","NoldFrictionEquations","getContacts","addEquation","ncontacts","speedSquaredB","speedLimitSquaredB","speedSquaredA","speedLimitSquaredA","World_step_collideEvent","contact","emitContactEvents","removeAllEquations","ld","av","ad","World_step_preStepEvent","clearForces","World_step_postStepEvent","sleepTick","hasBeginContact","hasAnyEventListener","hasEndContact","getDiff","beginContactEvent","getBodyById","endContactEvent","hasBeginShapeContact","hasEndShapeContact","getShapeById","beginShapeContactEvent","endShapeContactEvent","globalThis","nowOffset","Date","timing","navigationStart","toInteger","count","RangeError","fixRegExpWellKnownSymbolLogic","isRegExp","anObject","speciesConstructor","advanceStringIndex","callRegExpExec","regexpExec","stickyHelpers","UNSUPPORTED_Y","arrayPush","MAX_UINT32","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","split","SPLIT","nativeSplit","maybeCallNative","internalSplit","separator","limit","string","lim","lastIndex","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","source","splitter","rx","done","unicodeMatching","common","shaCommon","rotl32","sum32","sum32_5","ft_1","BlockHash","sha1_K","SHA1","W","_update","msg","classof","TypeError","DOMIterables","forEach","createNonEnumerableProperty","COLLECTION_NAME","Collection","CollectionPrototype","$forEach","arrayMethodIsStrict","STRICT_METHOD","callbackfn","Constructor","getBuiltIn","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","next","SKIP_CLOSING","ITERATION_SUPPORT","object","userAgent","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","Promise","then","_asyncToGenerator","self","err","V8_VERSION","METHOD_NAME","foo","assert","Hmac","hash","Hash","inner","outer","_init","toArray","digest","isArrayIteratorMethod","getIterator","getIteratorMethod","iteratorClose","Result","stopped","iterable","unboundFunction","iterator","iterFn","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","integer","redefine","setGlobal","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","noTargetGet","forced","sham","internalObjectKeys","enumBugKeys","hiddenKeys","notARegExp","correctIsRegExpLogic","proto","searchString","$toString","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","unsafe","definePropertyModule","CONSTRUCTOR_NAME","configurable","_setPrototypeOf","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","writable","_arrayWithoutHoles","arr","_iterableToArray","Symbol","_nonIterableSpread","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","kind","innerResult","innerError","_getPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","Proxy","valueOf","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_typeof","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","Super","NewTarget","possibleConstructorReturn","location","defer","channel","port","html","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","process","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","hasOwnProperty","runner","post","postMessage","protocol","host","argumentsLength","nextTick","port2","port1","onmessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","version","Deno","versions","v8","dom","children","style","display","document","cssText","preventDefault","Panel","memory","REVISION","addPanel","showPanel","begin","usedJSHeapSize","jsHeapSizeLimit","domElement","setMode","round","devicePixelRatio","width","height","getContext","font","textBaseline","fillStyle","fillRect","fillText","globalAlpha","drawImage","nativeGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","FAILS_ON_PRIMITIVES","Iterators","objectKeys","defineProperties","Properties","__webpack_amd_options__","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","getInternalState","getterFor","iterated","state","setupDevtoolsPlugin","pluginDescriptor","setupFn","hook","emit","__VUE_DEVTOOLS_PLUGINS__","ctor","superCtor","super_","enumerable","TempCtor","BN","number","base","endian","isBN","negative","words","red","Buffer","wordSize","parseHex4Bits","charCodeAt","parseHexByte","parseBase","mul","num","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","off","strip","parseLength","limbLen","limbPow","total","mod","word","imuln","_iaddn","dest","_expand","_normSign","inspect","zeros","groupSizes","groupBases","toBitArray","bitLength","bit","wbit","smallMulTo","out","lo","carry","ncarry","rword","maxJ","padding","groupSize","groupBase","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","andln","iushrn","clz32","_countBits","_zeroBits","hi","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","imul","w0","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","fftm","FFTM","mulp","mulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","itwdf","rtwdf_","itwdf_","ie","ro","io","guessLen13b","odd","normalize13b","ws","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","iushln","bits","carryMask","newCarry","ishln","hint","extended","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","bhiBits","diff","div","divmod","positive","divn","umod","divRound","dm","half","acc","egcd","D","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","input","outLen","prev","mod3","one","nOne","lpow","inv","windowSize","wnd","currentLen","mont","toStringTag","__esModule","return","btoa","sources","map","sourceRoot","unescape","encodeURIComponent","JSON","stringify","locals","default","sourceMap","shadowMode","propertyIsEnumerable","4930","getOwnPropertySymbols","css","media","parts","DEBUG","head","getElementsByTagName","navigator","toLowerCase","refs","querySelector","parentNode","filter","styleSheet","createTextNode","childNodes","insertBefore","setAttribute","ssrId","firstChild","5135","5319","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","E","5692","copyright","5899","trim","6547","codeAt","WeakMap","enforce","7156","7418","7839","write","close","parentWindow","src","contentWindow","open","F","domain","ActiveXObject","IteratorPrototype","BUGGY_SAFARI_ITERATORS","entries","8418","8875","currentScript","stack","href","documentElement","outerHTML","readyState","innerHTML","8925","inspectSource","random","9112","9263","BROKEN_CARET","NATIVE","POLYFILL","a4d3","L","U","G","H","Y","K","X","J","Q","Z","tt","et","rt","nt","QObject","ot","findChild","ct","tag","description","at","ut","ft","vt","st","pt","wrap","for","keyFor","useSetter","useSimple","a630","a640","a691","a9e3","NaN","parseInt","ac1f","ad6d","dotAll","ae40","ACCESSORS","ae93","b041","b0c0","b622","withoutSetter","b727","some","every","find","findIndex","c04e","c430","c6b6","c6cd","c8ba","c975","1","ca84","cc12","ce4e","d012","d039","d066","d1e7","d28b","d2bb","d3b7","d44e","d784","d81d","da84","ddb0","df75","e01a","e163","e177","e260","Arguments","e538","e893","e8b5","e95a","f5df","callee","f772","f7ca","fb15","class","border","getOuterStyle","idNow","status","getLineStyle","active","getActiveStyle","getCutStyle","items","getCutBarStyle","showText","content","percent","required","validator","bgColor","cutColor","cutWidth","lineHeight","color","colorFlow","flowSecond","activeColor","format","computed","mounted","countCut","getUUID","methods","getElementById","setInterval","clearInterval","offsetWidth","render","fb6a","0","fc6a","fdbc","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","fdbf","platform","arch","execPath","title","pid","browser","env","argv","binding","path","cwd","chdir","dir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","getOwnPropertyDescriptors","querySelectorAll","activeElement","root","onKeyDown","enable","disable","firstElement","lastElement","keyCode","shiftKey","focus","removeEventListener","targetTouches","clientX","clientY","down","pc","move","up","passive","maxTouchPoints","ee","te","ne","oe","classList","contains","parentElement","nodeType","Node","ELEMENT_NODE","getComputedStyle","overflowY","scrollHeight","clientHeight","scrollTop","touches","ae","targetElement","ontouchstart","ontouchmove","stopPropagation","reserveScrollBarGap","innerWidth","clientWidth","getPropertyValue","paddingRight","overflow","le","ue","se","fe","de","ce","ve","tr","br","tl","pe","modelValue","ssr","classes","overlayClass","contentClass","styles","overlayStyle","contentStyle","lockScroll","hideOverlay","clickToClose","escToClose","preventClick","attach","transition","overlayTransition","zIndexAuto","zIndexBase","zIndex","focusRetain","focusTrap","fitParent","drag","dragSelector","keepChangedStyle","resize","resizeDirections","minWidth","minHeight","maxWidth","maxHeight","emits","setup","modal","overlay","uid","vfmContainer","vfmContent","vfmResize","vfmOverlayTransition","vfmTransition","getAttachElement","modalStackIndex","visibility","handleLockScroll","$focusTrap","toggle","params","api","openedModals","ref","getAttribute","getBoundingClientRect","top","absolute","minTop","minLeft","maxTop","maxLeft","relative","bottom","minEdge","getEdge","maxEdge","getOffsetAxis","edgeName","toUpperCase","margin","touchAction","flush","modals","remove","computedOverlayTransition","computedTransition","visible","calculateZIndex","bindStyle","bindContentStyle","beforeOverlayEnter","afterOverlayEnter","beforeOverlayLeave","afterOverlayLeave","beforeModalEnter","afterModalEnter","beforeModalLeave","afterModalLeave","onMousedown","onMouseupContainer","onEsc","me","ye","he","insertAt","onKeydown","onBeforeEnter","onAfterEnter","onBeforeLeave","onAfterLeave","role","tabindex","onMouseup","$slots","$emit","__scopeId","__file","be","dynamicModals","beforeOpen","$nextTick","isString","ge","we","xe","assign","component","on","on_closed","on_beforeOpen","on_opened","opened","slots","Ee","Se","show","allSettled","hide","hideAll","_setDefaultModal","Oe","Me","$vfm","VueFinalModal","Ce","ModalsContainer","componentName","dynamicContainerName","config","globalProperties","provide","Ae","install","UNSCOPABLES","ArrayPrototype","MATCH","defaultConstructor","pref","symbol","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","instance","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","$filter","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","callWithSafeIterationClosing","createProperty","arrayLike","mapfn","mapping","iteratorMethod","argument","hasOwn","getSubstitution","regExpExec","REPLACE","maybeToString","REPLACE_SUPPORTS_NAMED_GROUPS","nativeReplace","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","fullUnicode","results","matchStr","accumulatedResult","nextSourcePosition","replacerArgs","obj","logger","isHexable","addSlice","Uint8Array","isBytesLike","isHexString","isBytes","arrayify","checkSafeUint53","unshift","allowMissingPrefix","substring","toHexString","hex","hexPad","throwArgumentError","item","reduce","accum","stripZeros","zeroPad","HexCharacters","hexlify","hexDataLength","hexDataSlice","endOffset","hexConcat","hexValue","trimmed","hexStripZeros","hexZeroPad","splitSignature","signature","_vs","recoveryParam","bytes","joinSignature","storeKey","useStore","forEachValue","isPromise","partial","genericSubscribe","subs","prepend","resetStore","store","hot","_actions","_mutations","_wrappedGetters","_modulesNamespaceMap","installModule","_modules","resetStoreState","oldState","_state","getters","_makeLocalGettersCache","wrappedGetters","computedObj","strict","enableStrictMode","_withCommit","rootState","isRoot","namespace","getNamespace","namespaced","parentState","getNestedState","moduleName","context","makeLocalContext","forEachMutation","mutation","namespacedType","registerMutation","forEachAction","action","handler","registerAction","forEachGetter","getter","registerGetter","forEachChild","child","noNamespace","dispatch","_type","_payload","_options","unifyObjectStyle","payload","commit","makeLocalGetters","gettersProxy","splitPos","localType","entry","rootGetters","_devtoolHook","catch","rawGetter","_committing","deep","LABEL_VUEX_BINDINGS","MUTATIONS_LAYER_ID","ACTIONS_LAYER_ID","INSPECTOR_ID","actionId","addDevtools","app","label","homepage","logo","packageName","componentStateTypes","addTimelineLayer","COLOR_LIME_500","addInspector","icon","treeFilterPlaceholder","getInspectorTree","inspectorId","nodes","flattenStoreForInspectorTree","rootNodes","formatStoreForInspectorTree","getInspectorState","modulePath","nodeId","formatStoreForInspectorState","getStoreModule","editInspectorState","subscribe","notifyComponentUpdate","sendInspectorTree","sendInspectorState","addTimelineEvent","layerId","subscribeAction","before","_id","_time","groupId","subtitle","after","duration","_custom","tooltip","COLOR_DARK","COLOR_WHITE","TAG_NAMESPACED","textColor","backgroundColor","extractNameFromPath","tags","_children","endsWith","gettersKeys","storeState","editable","transformPathsToObjectTree","canThrow","leafKey","abstract","moduleMap","names","Module","rawModule","runtime","_rawModule","rawState","prototypeAccessors$1","addChild","getChild","hasChild","actions","mutations","ModuleCollection","rawRootModule","register","targetModule","newModule","assertRawModule","modules","this$1$1","parent","rawChildModule","unregister","isRegistered","functionAssert","expected","objectAssert","assertTypes","assertOptions","makeAssertionMessage","buf","createStore","Store","plugins","devtools","_actionSubscribers","_subscribers","_devtools","plugin","prototypeAccessors","injectKey","$store","useDevtools","silent","all","watch","replaceState","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","isValidMap","normalizeMap","getModuleByNamespace","vuex","mapActions","helper","_defineProperty","ownKeys","enumerableOnly","sym","_objectSpread2","IS_PURE","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","isSymbol","whitespaces","whitespace","ltrim","rtrim","TYPE","sha1","sha224","sha256","sha384","sha512","CullFaceNone","CullFaceBack","CullFaceFront","PCFShadowMap","PCFSoftShadowMap","VSMShadowMap","FrontSide","BackSide","DoubleSide","FlatShading","NoBlending","NormalBlending","AdditiveBlending","SubtractiveBlending","MultiplyBlending","CustomBlending","AddEquation","SubtractEquation","ReverseSubtractEquation","MinEquation","MaxEquation","ZeroFactor","OneFactor","SrcColorFactor","OneMinusSrcColorFactor","SrcAlphaFactor","OneMinusSrcAlphaFactor","DstAlphaFactor","OneMinusDstAlphaFactor","DstColorFactor","OneMinusDstColorFactor","SrcAlphaSaturateFactor","NeverDepth","AlwaysDepth","LessDepth","LessEqualDepth","EqualDepth","GreaterEqualDepth","GreaterDepth","NotEqualDepth","MultiplyOperation","MixOperation","AddOperation","NoToneMapping","LinearToneMapping","ReinhardToneMapping","CineonToneMapping","ACESFilmicToneMapping","CustomToneMapping","UVMapping","CubeReflectionMapping","CubeRefractionMapping","EquirectangularReflectionMapping","EquirectangularRefractionMapping","CubeUVReflectionMapping","CubeUVRefractionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedByteType","ByteType","ShortType","UnsignedShortType","IntType","UnsignedIntType","FloatType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedShort565Type","UnsignedInt248Type","AlphaFormat","RGBFormat","RGBAFormat","LuminanceFormat","LuminanceAlphaFormat","RGBEFormat","DepthFormat","DepthStencilFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBIntegerFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_4BPPV1_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","SRGB8_ALPHA8_ASTC_4x4_Format","SRGB8_ALPHA8_ASTC_5x4_Format","SRGB8_ALPHA8_ASTC_5x5_Format","SRGB8_ALPHA8_ASTC_6x5_Format","SRGB8_ALPHA8_ASTC_6x6_Format","SRGB8_ALPHA8_ASTC_8x5_Format","SRGB8_ALPHA8_ASTC_8x6_Format","SRGB8_ALPHA8_ASTC_8x8_Format","SRGB8_ALPHA8_ASTC_10x5_Format","SRGB8_ALPHA8_ASTC_10x6_Format","SRGB8_ALPHA8_ASTC_10x8_Format","SRGB8_ALPHA8_ASTC_10x10_Format","SRGB8_ALPHA8_ASTC_12x10_Format","SRGB8_ALPHA8_ASTC_12x12_Format","LoopOnce","LoopRepeat","LoopPingPong","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","NormalAnimationBlendMode","AdditiveAnimationBlendMode","TrianglesDrawMode","LinearEncoding","sRGBEncoding","GammaEncoding","RGBEEncoding","LogLuvEncoding","RGBM7Encoding","RGBM16Encoding","RGBDEncoding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","ObjectSpaceNormalMap","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","DynamicDrawUsage","GLSL3","EventDispatcher","_lut","DEG2RAD","RAD2DEG","generateUUID","d3","uuid","clamp","euclideanModulo","isPowerOfTwo","floorPowerOfTwo","LN2","Vector2","addVectors","subVectors","multiplyScalar","minVal","divideScalar","distanceToSquared","dx","dy","alpha","attribute","getX","getY","center","isVector2","Matrix3","n11","n12","n13","n21","n22","n23","n31","n32","n33","xAxis","yAxis","zAxis","setFromMatrix3Column","multiplyMatrices","t11","t12","t13","det","detInv","matrix4","setFromMatrix4","invert","rotation","cx","cy","theta","fromArray","_canvas","isMatrix3","ImageUtils","image","HTMLCanvasElement","canvas","createElementNS","ImageData","putImageData","toDataURL","textureId","Texture","DEFAULT_IMAGE","DEFAULT_MAPPING","wrapS","wrapT","magFilter","minFilter","anisotropy","encoding","mipmaps","internalFormat","matrixAutoUpdate","generateMipmaps","premultiplyAlpha","flipY","unpackAlignment","onUpdate","isRenderTargetTexture","setUvTransform","meta","isRootObject","textures","metadata","generator","images","url","isDataTexture","serializeImage","uv","applyMatrix3","HTMLImageElement","ImageBitmap","getDataURL","isTexture","Vector4","epsilon","epsilon2","m11","m12","m13","m21","m22","m23","m31","m32","m33","getZ","getW","isVector4","WebGLRenderTarget","scissor","scissorTest","viewport","texture","depthBuffer","stencilBuffer","depthTexture","dispose","isWebGLRenderTarget","WebGLMultipleRenderTargets","il","isWebGLMultipleRenderTargets","WebGLMultisampleRenderTarget","samples","isWebGLMultisampleRenderTarget","_x","_y","_z","_w","qa","qb","qm","slerpQuaternions","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","y1","z1","sqrSin","EPSILON","tDir","_onChangeCallback","euler","isEuler","_order","halfAngle","trace","vFrom","vTo","angleTo","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","isQuaternion","Vector3","applyQuaternion","_quaternion$4","setFromEuler","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","crossVectors","denominator","lengthSq","_vector$c","projectOnVector","dz","setFromSphericalCoords","phi","sinPhiRadius","setFromCylindricalCoords","setFromMatrixColumn","isVector3","Box3","minX","minY","minZ","maxX","maxY","maxZ","makeEmpty","expandByPoint","halfSize","_vector$b","expandByObject","isEmpty","addScalar","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","_box$3","union","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0$2","_v1$7","_v2$3","_f0","_f1","_f2","satForAxes","_triangleNormal","clampedPoint","getSize","_points","equals","isBox3","_testAxis","extents","p0","_box$2","_v1$6","_toFarthestPoint","_toPoint","Sphere","optionalCenter","maxRadiusSq","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","missingRadiusHalf","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","origin","directionDistance","distanceSqToPoint","optionalPointOnRay","optionalPointOnSegment","segExtent","a01","s0","sqrDist","extDet","invDet","tca","radius2","thc","distanceToPlane","distToPoint","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","intersectBox","backfaceCulling","sign","DdN","DdQxE2","DdE1xQ","QdN","transformDirection","Matrix4","n14","n24","n34","n41","n42","n43","n44","scaleX","_v1$5","scaleY","scaleZ","af","bf","cf","df","ac","bc","bd","compose","_zero","_one","eye","a14","a24","a34","a41","a42","a43","a44","b14","b24","b34","b41","b42","b43","b44","t14","scaleXSq","scaleYSq","scaleZSq","yx","zx","zy","determinant","_m1$2","invSX","invSY","invSZ","setFromRotationMatrix","near","far","isMatrix4","_matrix$1","_quaternion$3","Euler","DefaultOrder","makeRotationFromQuaternion","newOrder","setFromQuaternion","optionalResult","RotationOrders","Layers","layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","DefaultUp","onRotationChange","onQuaternionChange","_onChange","modelViewMatrix","normalMatrix","DefaultMatrixAutoUpdate","matrixWorldNeedsUpdate","castShadow","receiveShadow","frustumCulled","renderOrder","animations","userData","updateMatrix","premultiply","decompose","multiply","rotateOnAxis","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","isObject3D","getObjectByProperty","traverse","traverseVisible","traverseAncestors","updateMatrixWorld","updateParents","updateChildren","geometries","skeletons","serialize","library","isInstancedMesh","instanceMatrix","instanceColor","isScene","background","isColor","environment","isMesh","isLine","isPoints","parameters","isSkinnedMesh","bindMode","bindMatrix","skeleton","uuids","animation","extractFromCache","cache","recursive","parse","_v0$1","_v1$3","_v2$2","_v3$1","_vab","_vac","_vbc","_vap","_vbp","_vcp","Triangle","targetLengthSq","denom","invDenom","getBarycoord","p3","uv1","uv2","uv3","i0","i1","i2","setFromCoplanarPoints","getUV","containsPoint","isFrontFacing","intersectsTriangle","d4","d5","d6","materialId","fog","blending","side","vertexColors","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clippingPlanes","clipIntersection","clipShadows","shadowSide","colorWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaToCoverage","premultipliedAlpha","toneMapped","_alphaTest","onBeforeCompile","newValue","flatShading","currentValue","getHex","roughness","metalness","sheenTint","emissive","emissiveIntensity","specular","specularIntensity","specularTint","shininess","clearcoat","clearcoatRoughness","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","clearcoatNormalScale","matcap","alphaMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","bumpMap","bumpScale","normalMap","normalMapType","normalScale","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","emissiveMap","specularMap","specularIntensityMap","specularTintMap","envMap","combine","envMapIntensity","reflectivity","refractionRatio","gradientMap","transmission","transmissionMap","thickness","thicknessMap","attenuationDistance","attenuationTint","sizeAttenuation","linewidth","dashSize","gapSize","alphaTest","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","srcPlanes","dstPlanes","isMaterial","_colorKeywords","_hslA","_hslB","hue2rgb","SRGBToLinear","LinearToSRGB","Color","setRGB","setHex","setStyle","handleAlpha","parseFloat","components","setHSL","setColorName","gammaFactor","safeInverse","copyGammaToLinear","copyLinearToGamma","copySRGBToLinear","copyLinearToSRGB","hue","saturation","lightness","getHSL","color1","color2","normalized","NAMES","MeshBasicMaterial","setValues","isMeshBasicMaterial","_vector$9","_vector2$1","BufferAttribute","itemSize","usage","updateRange","index1","index2","colors","vectors","fromBufferAttribute","setXY","setXYZ","applyNormalMatrix","onUploadCallback","isBufferAttribute","Uint16BufferAttribute","Uint16Array","Uint32BufferAttribute","Uint32Array","Float16BufferAttribute","isFloat16BufferAttribute","Float32BufferAttribute","Float32Array","arrayMax","Int8Array","Uint8ClampedArray","Int16Array","Int32Array","Float64Array","_m1","_obj","_box$1","_boxMorphTargets","_vector$8","BufferGeometry","attributes","morphAttributes","morphTargetsRelative","boundingSphere","drawRange","materialIndex","needsUpdate","getNormalMatrix","tangent","computeBoundingSphere","makeRotationX","makeRotationY","makeRotationZ","makeTranslation","makeScale","translate","morphAttributesPosition","isGLBufferAttribute","setFromBufferAttribute","morphAttribute","jl","positions","uvs","nVertices","tan1","tan2","vA","vB","vC","uvA","uvB","uvC","sdir","tdir","handleTriangle","isFinite","group","tmp2","n2","handleVertex","positionAttribute","normalAttribute","pA","pB","pC","nA","nB","nC","normalizeNormals","isBufferGeometry","attribute1","attributeArray1","attribute2","attributeArray2","attributeOffset","convertBufferAttribute","array2","isInterleavedBufferAttribute","stride","geometry2","newAttribute","morphArray","addGroup","hasMorphAttributes","attributeArray","setIndex","_inverseMatrix$2","_ray$2","_sphere$3","_vA$1","_vB$1","_vC$1","_tempA","_tempB","_tempC","_morphA","_morphB","_morphC","_uvA$1","_uvB$1","_uvC$1","_intersectionPoint","_intersectionPointWorld","Mesh","updateMorphTargets","morphTargetInfluences","morphTargetDictionary","ml","morphTargets","raycaster","intersects","intersectsBox","intersection","morphPosition","groupMaterial","checkBufferGeometryIntersection","faceIndex","isGeometry","checkIntersection","intersectTriangle","morphInfluences","influence","boneTransform","BoxGeometry","widthSegments","heightSegments","depthSegments","scope","numberOfVertices","groupStart","buildPlane","udir","vdir","gridX","gridY","segmentWidth","segmentHeight","widthHalf","heightHalf","depthHalf","gridX1","gridY1","vertexCounter","groupCount","cloneUniforms","property","mergeUniforms","uniforms","merged","UniformsUtils","merge","default_vertex","default_fragment","ShaderMaterial","defines","vertexShader","fragmentShader","lights","clipping","extensions","derivatives","fragDepth","drawBuffers","shaderTextureLOD","defaultAttributeValues","index0AttributeName","uniformsNeedUpdate","glslVersion","uniform","isShaderMaterial","Camera","PerspectiveCamera","fov","aspect","zoom","view","filmGauge","filmOffset","updateProjectionMatrix","focalLength","vExtentSlope","getFilmHeight","atan","tan","fullWidth","fullHeight","offsetX","offsetY","skew","getFilmWidth","makePerspective","isPerspectiveCamera","CubeCamera","renderTarget","isWebGLCubeRenderTarget","cameraPX","cameraNX","cameraPY","cameraNY","cameraPZ","cameraNZ","renderer","scene","currentXrEnabled","xr","currentRenderTarget","getRenderTarget","setRenderTarget","CubeTexture","isCubeTexture","WebGLCubeRenderTarget","dummy","isInteger","_needsFlipEnvMap","shader","tEquirect","currentMinFilter","stencil","_vector1","_vector2","_normalMatrix","setFromNormalAndCoplanarPoint","inverseNormalLength","line","startSign","endSign","intersectsPlane","optionalNormalMatrix","referencePoint","coplanarPoint","isPlane","_sphere$2","_vector$7","Frustum","p4","p5","planes","frustum","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","sprite","negRadius","WebGLAnimation","isAnimating","animationLoop","requestId","onAnimationFrame","requestAnimationFrame","cancelAnimationFrame","setAnimationLoop","setContext","WebGLAttributes","gl","capabilities","isWebGL2","buffers","createBuffer","bufferType","buffer","bindBuffer","bufferData","bytesPerElement","BYTES_PER_ELEMENT","updateBuffer","bufferSubData","subarray","deleteBuffer","delete","cached","PlaneGeometry","width_half","height_half","segment_width","segment_height","alphamap_fragment","alphamap_pars_fragment","alphatest_fragment","alphatest_pars_fragment","aomap_fragment","aomap_pars_fragment","begin_vertex","beginnormal_vertex","bsdfs","bumpmap_pars_fragment","clipping_planes_fragment","clipping_planes_pars_fragment","clipping_planes_pars_vertex","clipping_planes_vertex","color_fragment","color_pars_fragment","color_pars_vertex","color_vertex","cube_uv_reflection_fragment","defaultnormal_vertex","displacementmap_pars_vertex","displacementmap_vertex","emissivemap_fragment","emissivemap_pars_fragment","encodings_fragment","encodings_pars_fragment","envmap_fragment","envmap_common_pars_fragment","envmap_pars_fragment","envmap_pars_vertex","envmap_vertex","fog_vertex","fog_pars_vertex","fog_fragment","fog_pars_fragment","gradientmap_pars_fragment","lightmap_fragment","lightmap_pars_fragment","lights_lambert_vertex","lights_pars_begin","envmap_physical_pars_fragment","lights_toon_fragment","lights_toon_pars_fragment","lights_phong_fragment","lights_phong_pars_fragment","lights_physical_fragment","lights_physical_pars_fragment","lights_fragment_begin","lights_fragment_maps","lights_fragment_end","logdepthbuf_fragment","logdepthbuf_pars_fragment","logdepthbuf_pars_vertex","logdepthbuf_vertex","map_fragment","map_pars_fragment","map_particle_fragment","map_particle_pars_fragment","metalnessmap_fragment","metalnessmap_pars_fragment","morphnormal_vertex","morphtarget_pars_vertex","morphtarget_vertex","normal_fragment_begin","normal_fragment_maps","normal_pars_fragment","normal_pars_vertex","normal_vertex","normalmap_pars_fragment","clearcoat_normal_fragment_begin","clearcoat_normal_fragment_maps","clearcoat_pars_fragment","output_fragment","packing","premultiplied_alpha_fragment","project_vertex","dithering_fragment","dithering_pars_fragment","roughnessmap_fragment","roughnessmap_pars_fragment","shadowmap_pars_fragment","shadowmap_pars_vertex","shadowmap_vertex","shadowmask_pars_fragment","skinbase_vertex","skinning_pars_vertex","skinning_vertex","skinnormal_vertex","specularmap_fragment","specularmap_pars_fragment","tonemapping_fragment","tonemapping_pars_fragment","transmission_fragment","transmission_pars_fragment","uv_pars_fragment","uv_pars_vertex","uv_vertex","uv2_pars_fragment","uv2_pars_vertex","uv2_vertex","worldpos_vertex","background_frag","background_vert","cube_frag","cube_vert","depth_frag","depth_vert","distanceRGBA_frag","distanceRGBA_vert","equirect_frag","equirect_vert","linedashed_frag","linedashed_vert","meshbasic_frag","meshbasic_vert","meshlambert_frag","meshlambert_vert","meshmatcap_frag","meshmatcap_vert","meshnormal_frag","meshnormal_vert","meshphong_frag","meshphong_vert","meshphysical_frag","meshphysical_vert","meshtoon_frag","meshtoon_vert","points_frag","points_vert","shadow_frag","shadow_vert","sprite_frag","sprite_vert","ShaderChunk","UniformsLib","diffuse","uvTransform","uv2Transform","specularmap","envmap","flipEnvMap","maxMipLevel","aomap","lightmap","emissivemap","bumpmap","normalmap","displacementmap","roughnessmap","metalnessmap","gradientmap","fogDensity","fogNear","fogFar","fogColor","ambientLightColor","lightProbe","directionalLights","properties","directionalLightShadows","shadowBias","shadowNormalBias","shadowRadius","shadowMapSize","directionalShadowMap","directionalShadowMatrix","spotLights","coneCos","penumbraCos","decay","spotLightShadows","spotShadowMap","spotShadowMatrix","pointLights","pointLightShadows","shadowCameraNear","shadowCameraFar","pointShadowMap","pointShadowMatrix","hemisphereLights","skyColor","groundColor","rectAreaLights","ltc_1","ltc_2","ShaderLib","basic","lambert","phong","standard","toon","dashed","totalSize","t2D","cube","equirect","distanceRGBA","referencePosition","nearDistance","farDistance","shadow","WebGLBackground","cubemaps","clearColor","planeMesh","boxMesh","clearAlpha","currentBackground","currentBackgroundVersion","currentTonemapping","renderList","forceClear","session","getSession","environmentBlendMode","setClear","autoClear","autoClearColor","autoClearDepth","autoClearStencil","deleteAttribute","onBeforeRender","copyPosition","toneMapping","getClearColor","setClearColor","getClearAlpha","setClearAlpha","WebGLBindingStates","maxVertexAttributes","getParameter","extension","vaoAvailable","bindingStates","defaultState","createBindingState","currentState","program","updateBuffers","getBindingState","bindVertexArrayObject","saveCache","setupVertexAttributes","createVertexArrayObject","createVertexArray","createVertexArrayOES","vao","bindVertexArray","bindVertexArrayOES","deleteVertexArrayObject","deleteVertexArray","deleteVertexArrayOES","programMap","stateMap","newAttributes","enabledAttributes","attributeDivisors","cachedAttributes","geometryAttributes","attributesNum","cachedAttribute","geometryAttribute","initAttributes","enableAttribute","enableAttributeAndDivisor","meshPerAttribute","enableVertexAttribArray","disableUnusedAttributes","disableVertexAttribArray","vertexAttribPointer","vertexAttribIPointer","isInstancedBufferGeometry","programAttributes","getAttributes","materialDefaultAttributeValues","programAttribute","isInstancedInterleavedBuffer","locationSize","_maxInstanceCount","isInstancedBufferAttribute","vertexAttrib2fv","vertexAttrib3fv","vertexAttrib4fv","vertexAttrib1fv","geometryId","programId","releaseStatesOfGeometry","releaseStatesOfProgram","resetDefaultState","WebGLBufferRenderer","drawArrays","renderInstances","primcount","methodName","WebGLCapabilities","maxAnisotropy","getMaxAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","getMaxPrecision","getShaderPrecisionFormat","WebGL2RenderingContext","WebGL2ComputeRenderingContext","maxPrecision","logarithmicDepthBuffer","maxTextures","maxVertexTextures","maxTextureSize","maxCubemapSize","maxAttributes","maxVertexUniforms","maxVaryings","maxFragmentUniforms","vertexTextures","floatFragmentTextures","floatVertexTextures","maxSamples","WebGLClipping","globalState","numGlobalPlanes","localClippingEnabled","renderingShadows","viewNormalMatrix","resetGlobalState","numPlanes","numIntersection","projectPlanes","skipTransform","nPlanes","dstArray","flatSize","viewMatrix","i4","init","enableLocalClipping","beginShadows","endShadows","setState","useCache","materialProperties","nGlobal","lGlobal","clippingState","WebGLCubeMaps","mapTextureMapping","cubemap","fromEquirectangularTexture","onTextureDispose","physical","transmissionSamplerSize","transmissionSamplerMap","OrthographicCamera","scaleW","scaleH","makeOrthographic","isOrthographicCamera","RawShaderMaterial","isRawShaderMaterial","LOD_MIN","LOD_MAX","SIZE_MAX","EXTRA_LOD_SIGMA","TOTAL_LODS","MAX_SAMPLES","ENCODINGS","_flatCamera","_lodPlanes","_sizeLods","_sigmas","_createPlanes","_clearColor","_oldTarget","PHI","INV_PHI","_axisDirections","PMREMGenerator","_renderer","_pingPongRenderTarget","_blurMaterial","_getBlurShader","_equirectShader","_cubemapShader","_compileMaterial","sigma","cubeUVRenderTarget","_allocateTargets","_sceneToCubeUV","_blur","_applyPMREM","_cleanup","equirectangular","_fromTexture","_getCubemapShader","_getEquirectShader","outputTarget","_setViewport","_textureToCubeUV","_isLDR","_createRenderTarget","tmpMesh","compile","cubeCamera","upSign","forwardSign","originalAutoClear","outputEncoding","backgroundMaterial","backgroundBox","useSolidColor","col","poleAxis","lodIn","lodOut","pingPongRenderTarget","_halfBlur","targetIn","targetOut","sigmaRadians","blurMaterial","STANDARD_DEVIATIONS","blurMesh","blurUniforms","pixels","radiansPerPixel","sigmaPixels","weights","sum","weight","exp","outputSize","lod","sizeLod","texelSize","cubeFaces","positionSize","uvSize","faceIndexSize","coordinates","fill","shaderMaterial","_getCommonVertexShader","_getEncodings","WebGLCubeUVMaps","cubeUVmaps","pmremGenerator","isEquirectMap","isCubeMap","isCubeTextureComplete","fromEquirectangular","fromCubemap","cubemapUV","WebGLExtensions","getExtension","WebGLGeometries","wireframeAttributes","onGeometryDispose","updateWireframeAttribute","geometryIndex","geometryPosition","previousAttribute","getWireframeAttribute","currentAttribute","WebGLIndexedBufferRenderer","drawElements","WebGLInfo","calls","lines","instanceCount","programs","autoReset","numericalSort","absNumericalSort","WebGLMorphtargets","influencesList","workInfluences","objectInfluences","influences","sort","MAX_SAFE_INTEGER","morphNormals","morphInfluencesSum","hasAttribute","morphBaseInfluence","getUniforms","setValue","WebGLObjects","updateMap","buffergeometry","hasEventListener","onInstancedMeshDispose","instancedMesh","DataTexture2DArray","wrapR","isDataTexture2DArray","DataTexture3D","isDataTexture3D","emptyTexture","emptyTexture2dArray","emptyTexture3d","emptyCubeTexture","arrayCacheF32","arrayCacheI32","mat4array","mat3array","mat2array","flatten","nBlocks","firstElem","arraysEqual","copyArray","allocTexUnits","allocateTextureUnit","setValueV1f","uniform1f","addr","setValueV2f","uniform2f","uniform2fv","setValueV3f","uniform3f","uniform3fv","setValueV4f","uniform4f","uniform4fv","setValueM2","uniformMatrix2fv","setValueM3","uniformMatrix3fv","setValueM4","uniformMatrix4fv","setValueV1i","uniform1i","setValueV2i","uniform2iv","setValueV3i","uniform3iv","setValueV4i","uniform4iv","setValueV1ui","uniform1ui","setValueV2ui","uniform2uiv","setValueV3ui","uniform3uiv","setValueV4ui","uniform4uiv","setValueT1","safeSetTexture2D","setValueT3D1","setTexture3D","setValueT6","safeSetTextureCube","setValueT2DArray1","setTexture2DArray","getSingularSetter","setValueV1fArray","uniform1fv","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","uniform1iv","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","uniform1uiv","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","units","setValueT6Array","getPureArraySetter","SingleUniform","activeInfo","PureArrayUniform","StructuredUniform","seq","updateCache","RePathPart","addUniform","container","uniformObject","parseUniform","pathLength","matchEnd","idIsIndex","subscript","WebGLUniforms","getProgramParameter","getActiveUniform","getUniformLocation","WebGLShader","createShader","shaderSource","compileShader","setOptional","upload","seqWithValue","programIdCount","addLineNumbers","getEncodingComponents","getShaderErrors","getShaderParameter","errors","getShaderInfoLog","getShaderSource","getTexelDecodingFunction","functionName","getTexelEncodingFunction","getToneMappingFunction","toneMappingName","generateExtensions","chunks","extensionDerivatives","envMapCubeUV","tangentSpaceNormalMap","shaderID","extensionFragDepth","rendererExtensionFragDepth","extensionDrawBuffers","rendererExtensionDrawBuffers","extensionShaderTextureLOD","rendererExtensionShaderTextureLod","filterEmptyLine","generateDefines","fetchAttributeLocations","getActiveAttrib","getAttribLocation","replaceLightNums","numDirLights","numSpotLights","numRectAreaLights","numPointLights","numHemiLights","numDirLightShadows","numSpotLightShadows","numPointLightShadows","replaceClippingPlaneNums","numClippingPlanes","numClipIntersection","includePattern","resolveIncludes","includeReplacer","include","deprecatedUnrollLoopPattern","unrollLoopPattern","unrollLoops","loopReplacer","deprecatedLoopReplacer","snippet","generatePrecision","precisionstring","generateShadowMapTypeDefine","shadowMapTypeDefine","shadowMapType","generateEnvMapTypeDefine","envMapTypeDefine","envMapMode","generateEnvMapModeDefine","envMapModeDefine","generateEnvMapBlendingDefine","envMapBlendingDefine","WebGLProgram","cacheKey","gammaFactorDefine","customExtensions","customDefines","createProgram","prefixVertex","prefixFragment","versionString","shaderName","instancing","instancingColor","supportsVertexTextures","maxBones","useFog","fogExp2","objectSpaceNormalMap","vertexTangents","vertexAlphas","vertexUvs","uvsVertexOnly","skinning","useVertexTexture","doubleSided","flipSided","shadowMapEnabled","physicallyCorrectLights","mapEncoding","matcapEncoding","envMapEncoding","emissiveMapEncoding","specularTintMapEncoding","lightMapEncoding","depthPacking","vertexGlsl","fragmentGlsl","glVertexShader","glFragmentShader","attachShader","bindAttribLocation","linkProgram","debug","checkShaderErrors","programLog","getProgramInfoLog","vertexLog","fragmentLog","runnable","haveDiagnostics","vertexErrors","fragmentErrors","getError","diagnostics","prefix","cachedUniforms","deleteShader","destroy","deleteProgram","usedTimes","WebGLPrograms","cubeuvmaps","shaderIDs","MeshDepthMaterial","MeshDistanceMaterial","MeshNormalMaterial","MeshLambertMaterial","MeshPhongMaterial","MeshToonMaterial","MeshStandardMaterial","MeshPhysicalMaterial","MeshMatcapMaterial","LineBasicMaterial","LineDashedMaterial","PointsMaterial","ShadowMaterial","SpriteMaterial","parameterNames","getMaxBones","bones","nVertexUniforms","nVertexMatrices","getTextureEncodingFromMap","getParameters","shadows","isMeshStandardMaterial","useAlphaTest","useClearcoat","isFogExp2","directional","spot","rectArea","hemi","shadowMap","customProgramCacheKey","getProgramCacheKey","acquireProgram","pl","preexistingProgram","releaseProgram","WebGLProperties","painterSortStable","groupOrder","reversePainterSortStable","WebGLRenderList","renderItems","renderItemsIndex","opaque","transmissive","defaultProgram","getNextRenderItem","renderItem","customOpaqueSort","customTransparentSort","finish","WebGLRenderLists","lists","renderCallDepth","UniformsCache","light","halfWidth","halfHeight","ShadowUniformsCache","nextVersion","shadowCastingLightsFirst","lightA","lightB","WebGLLights","shadowCache","directionalLength","pointLength","spotLength","rectAreaLength","hemiLength","numDirectionalShadows","numPointShadows","numSpotShadows","ambient","probe","directionalShadow","spotShadow","rectAreaLTC1","rectAreaLTC2","pointShadow","vector3","matrix42","scaleFactor","intensity","isAmbientLight","isLightProbe","sh","coefficients","isDirectionalLight","shadowUniforms","bias","normalBias","mapSize","isSpotLight","penumbra","isRectAreaLight","isPointLight","isHemisphereLight","LTC_FLOAT_1","LTC_FLOAT_2","LTC_HALF_1","LTC_HALF_2","setupView","identity","WebGLRenderState","lightsArray","shadowsArray","pushLight","pushShadow","shadowLight","setupLights","setupLightsView","WebGLRenderStates","renderStates","renderState","isMeshDepthMaterial","isMeshDistanceMaterial","vsm_frag","vsm_vert","WebGLShadowMap","_objects","_capabilities","_frustum","_shadowMapSize","_viewportSize","_viewport","_depthMaterial","_distanceMaterial","_materialCache","_maxTextureSize","2","shadowMaterialVertical","shadow_pass","resolution","shadowMaterialHorizontal","HORIZONTAL_PASS","fullScreenTri","fullScreenMesh","VSMPass","blurSamples","mapPass","renderBufferDirect","getDepthMaterial","customMaterial","customDistanceMaterial","customDepthMaterial","materialsForVariant","cachedMaterial","renderObject","shadowCamera","intersectsObject","kl","depthMaterial","autoUpdate","activeCubeFace","getActiveCubeFace","activeMipmapLevel","getActiveMipmapLevel","setBlending","setTest","setScissorTest","shadowFrameExtents","getFrameExtents","isPointLightShadow","pars","viewportCount","getViewportCount","vp","getViewport","updateMatrices","getFrustum","WebGLState","ColorBuffer","locked","currentColorMask","currentColorClear","setMask","colorMask","setLocked","lock","DepthBuffer","currentDepthMask","currentDepthFunc","currentDepthClear","depthMask","setFunc","clearDepth","StencilBuffer","currentStencilMask","currentStencilFunc","currentStencilRef","currentStencilFuncMask","currentStencilFail","currentStencilZFail","currentStencilZPass","currentStencilClear","stencilTest","stencilMask","setOp","stencilOp","clearStencil","colorBuffer","enabledCapabilities","xrFramebuffer","currentBoundFramebuffers","currentProgram","currentBlendingEnabled","currentBlending","currentBlendEquation","currentBlendSrc","currentBlendDst","currentBlendEquationAlpha","currentBlendSrcAlpha","currentBlendDstAlpha","currentPremultipledAlpha","currentFlipSided","currentCullFace","currentLineWidth","currentPolygonOffsetFactor","currentPolygonOffsetUnits","lineWidthAvailable","glVersion","currentTextureSlot","currentBoundTextures","scissorParam","viewportParam","currentScissor","currentViewport","createTexture","bindTexture","texParameteri","texImage2D","emptyTextures","bindXRFramebuffer","framebuffer","bindFramebuffer","useProgram","setFlipSided","setCullFace","equationToGL","MIN_EXT","MAX_EXT","factorToGL","blendEquationSeparate","blendFuncSeparate","blendFunc","setMaterial","frontFaceCW","setPolygonOffset","frontFace","cullFace","setLineWidth","lineWidth","factor","activeTexture","webglSlot","webglType","webglTexture","boundTexture","unbindTexture","compressedTexImage2D","texImage3D","WebGLTextures","_gl","_videoTextures","useOffscreenCanvas","OffscreenCanvas","createCanvas","resizeImage","needsPowerOfTwo","needsNewCanvas","maxSize","isPowerOfTwo$1","textureNeedsPowerOfTwo","textureNeedsGenerateMipmaps","supportsMips","generateMipmap","textureProperties","__maxMipLevel","log2","getInternalFormat","internalFormatName","glFormat","glType","filterFallback","deallocateTexture","isVideoTexture","onRenderTargetDispose","deallocateRenderTarget","__webglInit","deleteTexture","__webglTexture","renderTargetProperties","deleteFramebuffer","__webglFramebuffer","__webglDepthbuffer","deleteRenderbuffer","__webglMultisampledFramebuffer","__webglColorRenderbuffer","__webglDepthRenderbuffer","attachmentProperties","textureUnits","resetTextureUnits","textureUnit","setTexture2D","slot","updateVideoTexture","__version","complete","uploadTexture","setTextureCube","uploadCubeTexture","wrappingToGL","filterToGL","setTextureParameters","textureType","__currentAnisotropy","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","initTexture","pixelStorei","convert","mipmap","glInternalFormat","isDepthTexture","isCompressedTexture","isCompressed","cubeImage","mipmapImage","setupFrameBufferTexture","attachment","textureTarget","framebufferTexture2D","setupRenderBufferStorage","renderbuffer","isMultisample","bindRenderbuffer","getRenderTargetSamples","renderbufferStorageMultisample","renderbufferStorage","framebufferRenderbuffer","setupDepthTexture","isCube","webglDepthTexture","setupDepthRenderbuffer","createRenderbuffer","setupRenderTarget","isMultipleRenderTargets","isRenderTarget3D","createFramebuffer","glTextureType","isTexture3D","updateRenderTargetMipmap","updateMultisampleRenderTarget","blitFramebuffer","warnedTexture2D","warnedTextureCube","WebGLUtils","HALF_FLOAT_OES","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","UNSIGNED_INT_24_8_WEBGL","ArrayCamera","cameras","isArrayCamera","Group","isGroup","_moveEvent","WebXRController","_targetRay","_grip","_hand","joints","inputState","pinching","hasLinearVelocity","linearVelocity","hasAngularVelocity","inputSource","referenceSpace","inputPose","gripPose","handPose","targetRay","grip","hand","visibilityState","getPose","targetRaySpace","inputjoint","jointPose","getJointPose","jointName","joint","jointRadius","indexTip","thumbTip","distanceToPinch","threshold","handedness","gripSpace","WebXRManager","framebufferScaleFactor","referenceSpaceType","pose","glBinding","glFramebuffer","glProjLayer","glBaseLayer","glMultisampledFramebuffer","glColorRenderbuffer","glDepthRenderbuffer","xrFrame","depthStyle","clearStyle","controllers","inputSourcesMap","Map","cameraL","cameraR","cameraVR","_currentDepthNear","_currentDepthFar","onSessionEvent","controller","onSessionEnd","disconnect","isPresenting","onInputSourcesChange","inputSources","removed","added","cameraAutoUpdate","getController","getTargetRaySpace","getControllerGrip","getGripSpace","getHand","getHandSpace","setFramebufferScaleFactor","setReferenceSpaceType","getReferenceSpace","getBaseLayer","getBinding","getFrame","setSession","async","getContextAttributes","xrCompatible","makeXRCompatible","layerInit","antialias","XRWebGLLayer","updateRenderState","baseLayer","WebGLRenderingContext","depthFormat","projectionlayerInit","colorFormat","XRWebGLBinding","createProjectionLayer","textureWidth","textureHeight","requestReferenceSpace","cameraLPos","cameraRPos","setProjectionFromUnion","ipd","projL","projR","topFov","bottomFov","leftFov","rightFov","zOffset","xOffset","translateX","translateZ","near2","far2","left2","right2","top2","bottom2","updateCamera","depthNear","depthFar","getCamera","getFoveation","fixedFoveation","setFoveation","foveation","onAnimationFrameCallback","getViewerPose","views","cameraVRNeedsUpdate","glSubImage","getViewSubImage","depthStencilTexture","colorTexture","invalidateFramebuffer","WebGLMaterials","refreshFogUniforms","isFog","density","refreshMaterialUniforms","pixelRatio","transmissionRenderTarget","refreshUniformsCommon","isMeshLambertMaterial","refreshUniformsLambert","isMeshToonMaterial","refreshUniformsToon","isMeshPhongMaterial","refreshUniformsPhong","isMeshPhysicalMaterial","refreshUniformsPhysical","refreshUniformsStandard","isMeshMatcapMaterial","refreshUniformsMatcap","refreshUniformsDepth","refreshUniformsDistance","isMeshNormalMaterial","refreshUniformsNormal","isLineBasicMaterial","refreshUniformsLine","isLineDashedMaterial","refreshUniformsDash","isPointsMaterial","refreshUniformsPoints","isSpriteMaterial","refreshUniformsSprites","isShadowMaterial","uvScaleMap","uv2ScaleMap","createCanvasElement","WebGLRenderer","_context","_alpha","_depth","_stencil","_antialias","_premultipliedAlpha","_preserveDrawingBuffer","preserveDrawingBuffer","_powerPreference","powerPreference","_failIfMajorPerformanceCaveat","failIfMajorPerformanceCaveat","currentRenderList","currentRenderState","renderListStack","renderStateStack","sortObjects","toneMappingExposure","_this","_isContextLost","_currentActiveCubeFace","_currentActiveMipmapLevel","_currentRenderTarget","_currentMaterialId","_currentCamera","_currentViewport","_currentScissor","_currentScissorTest","_width","_height","_pixelRatio","_opaqueSort","_transparentSort","_scissor","_scissorTest","_currentDrawBuffers","_clippingEnabled","_localClippingEnabled","_transmissionRenderTarget","_projScreenMatrix","_vector3","_emptyScene","overrideMaterial","getTargetPixelRatio","programCache","renderLists","morphtargets","bufferRenderer","indexedBufferRenderer","contextNames","contextAttributes","contextName","onContextLost","onContextRestore","isWebGL1Renderer","message","initGLContext","infoAutoReset","shadowMapAutoUpdate","shadowMapNeedsUpdate","onMaterialDispose","deallocateMaterial","releaseMaterialProgramReferences","renderObjectImmediate","renderBufferImmediate","forceContextLoss","loseContext","forceContextRestore","restoreContext","getPixelRatio","setPixelRatio","setSize","updateStyle","setViewport","getDrawingBufferSize","setDrawingBufferSize","getCurrentViewport","getScissor","setScissor","getScissorTest","boolean","setOpaqueSort","method","setTransparentSort","onXRSessionStart","onXRSessionEnd","hasPositions","hasNormals","hasUvs","hasColors","positionArray","normalArray","uvArray","colorArray","setProgram","rangeFactor","dataCount","rangeStart","rangeCount","drawStart","drawEnd","drawCount","isLineSegments","isLineLoop","isSprite","material2","getProgram","projectObject","isLOD","intersectsSprite","isImmediateRenderObject","renderScene","opaqueObjects","transmissiveObjects","transparentObjects","renderTransmissionPass","renderObjects","needsAntialias","renderTargetType","currentToneMapping","onAfterRender","lightsStateVersion","programCacheKey","updateCommonMaterialProperties","onBuild","needsLights","materialNeedsLights","progUniforms","uniformsList","needsProgramChange","refreshProgram","refreshMaterial","refreshLights","p_uniforms","m_uniforms","uCamPos","cameraPosition","boneTexture","computeBoneTexture","boneTextureSize","markUniformsLightsNeedsUpdate","setFromProjectionMatrix","camera2","framebufferBound","drawBuffersWEBGL","layer","framebufferTextureLayer","readRenderTargetPixels","activeCubeFaceIndex","textureFormat","halfFloatSupportedByExt","checkFramebufferStatus","readPixels","copyFramebufferToTexture","level","levelScale","copyTexImage2D","copyTextureToTexture","srcTexture","dstTexture","texSubImage2D","compressedTexSubImage2D","copyTextureToTexture3D","sourceBox","glTarget","unpackRowLen","unpackImageHeight","unpackSkipPixels","unpackSkipRows","unpackSkipImages","texSubImage3D","compressedTexSubImage3D","resetState","__THREE_DEVTOOLS__","CustomEvent","detail","WebGL1Renderer","FogExp2","Fog","Scene","InterleavedBuffer","arrayBuffers","_uuid","ib","setUsage","isInterleavedBuffer","_vector$6","InterleavedBufferAttribute","interleavedBuffer","interleavedBuffers","_geometry","_intersectPoint","_worldScale","_mvPosition","_alignedPosition","_rotatedPosition","_viewWorldMatrix","_vA","_vB","_vC","_uvA","_uvB","_uvC","Sprite","float32Array","setFromMatrixScale","transformVertex","vertexPosition","mvPosition","_basePosition","_skinIndex","_skinWeight","_vector$5","_matrix","SkinnedMesh","bindMatrixInverse","calculateInverses","skinWeight","manhattanLength","setXYZW","skinIndex","getComponent","boneIndex","boneInverses","Bone","isBone","DataTexture","InstancedBufferAttribute","_instanceLocalMatrix","_instanceWorldMatrix","_instanceIntersects","_mesh","InstancedMesh","raycastTimes","instanceId","getMatrixAt","raycast","linecap","linejoin","_start$1","_end$1","_inverseMatrix$1","_ray$1","_sphere$1","Line","lineDistances","localThreshold","localThresholdSq","vStart","vEnd","interSegment","interRay","distSq","distanceSqToSegment","_start","_end","LineSegments","LineLoop","_inverseMatrix","_ray","_sphere","_position$2","Points","testPoint","rayPointDistanceSq","closestPointToPoint","distanceToRay","VideoTexture","video","updateVideo","requestVideoFrameCallback","hasVideoFrameCallback","HAVE_CURRENT_DATA","CompressedTexture","CanvasTexture","isCanvasTexture","DepthTexture","Curve","arcLengthDivisions","optionalTarget","getUtoTmapping","getPoint","divisions","getPointAt","lengths","getLengths","cacheArcLengths","last","arcLengths","targetArcLength","comparison","low","high","lengthBefore","lengthAfter","segmentLength","segmentFraction","pt1","pt2","getTangent","segments","closed","binormals","vec","mat","getTangentAt","makeRotationAxis","json","EllipseCurve","aX","aY","xRadius","yRadius","aStartAngle","aEndAngle","aClockwise","aRotation","twoPi","deltaAngle","samePoints","fromJSON","isEllipseCurve","ArcCurve","aRadius","CubicPoly","c0","initCatmullRom","x3","tension","initNonuniformCatmullRom","dt0","dt1","dt2","calc","isArcCurve","CatmullRomCurve3","curveType","intPoint","CatmullRom","QuadraticBezierP0","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","CubicBezierP0","CubicBezierP1","CubicBezierP2","CubicBezierP3","CubicBezier","isCatmullRomCurve3","CubicBezierCurve","v3","isCubicBezierCurve","CubicBezierCurve3","isCubicBezierCurve3","LineCurve","isLineCurve","LineCurve3","isLineCurve3","QuadraticBezierCurve","isQuadraticBezierCurve","QuadraticBezierCurve3","isQuadraticBezierCurve3","SplineCurve","isSplineCurve","Curves","freeze","Earcut","triangulate","holeIndices","dim","hasHoles","outerLen","outerNode","linkedList","invSize","eliminateHoles","earcutLinked","clockwise","signedArea","insertNode","removeNode","filterPoints","again","steiner","area","ear","pass","indexCurve","isEarHashed","isEar","cureLocalIntersections","splitEarcut","minTX","minTY","maxTX","maxTY","zOrder","prevZ","nextZ","locallyInside","isValidDiagonal","splitPolygon","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","hx","hy","mx","my","tanMin","sectorContainsSector","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","intersectsPolygon","middleInside","q1","q2","o1","o2","o3","o4","onSegment","inside","an","bp","ShapeUtils","contour","pts","holes","removeDupEndPts","addContour","holeIndex","ExtrudeGeometry","verticesArray","placeholder","curveSegments","steps","bevelEnabled","bevelThickness","bevelSize","bevelOffset","bevelSegments","extrudePath","uvgen","UVGenerator","WorldUVGenerator","amount","extrudePts","splineTube","binormal","position2","extrudeByPath","getSpacedPoints","computeFrenetFrames","shapePoints","extractPoints","reverse","isClockWise","hl","ahole","triangulateShape","scalePt2","vlen","flen","getBevelVec","inPt","inPrev","inNext","v_trans_x","v_trans_y","shrink_by","v_prev_x","v_prev_y","v_next_x","v_next_y","v_prev_lensq","collinear0","v_prev_len","v_next_len","ptPrevShift_x","ptPrevShift_y","ptNextShift_x","ptNextShift_y","sf","v_trans_lensq","direction_eq","contourMovements","holesMovements","oneHoleMovements","verticesMovements","bs","vert","buildLidFaces","f3","buildSideFaces","layeroffset","sidewalls","sl","slen1","slen2","f4","addVertex","nextIndex","generateTopUV","addUV","generateSideWallUV","vector2","computeVertexNormals","toJSON$1","geometryShapes","indexA","indexB","indexC","a_x","a_y","b_x","b_y","c_x","c_y","indexD","a_z","b_z","c_z","d_x","d_y","d_z","ShapeGeometry","indexOffset","shapeVertices","shapeHoles","shapeHole","_clearcoat","_transmission","AnimationUtils","arraySlice","isTypedArray","convertArray","forceClone","ArrayBuffer","isView","DataView","getKeyframeOrder","times","compareTime","sortedArray","nValues","srcOffset","flattenJSON","jsonKeys","valuePropertyName","subclip","sourceClip","startFrame","endFrame","fps","clip","tracks","track","valueSize","getValueSize","minStartTime","resetDuration","makeClipAdditive","targetClip","referenceFrame","referenceClip","numTracks","referenceTime","referenceTrack","referenceTrackType","ValueTypeName","targetTrack","referenceOffset","referenceValueSize","createInterpolant","isInterpolantFactoryMethodGLTFCubicSpline","targetOffset","targetValueSize","referenceValue","startIndex","endIndex","interpolant","evaluate","resultBuffer","referenceQuat","numTimes","valueStart","multiplyQuaternionsFlat","valueEnd","blendMode","Interpolant","parameterPositions","sampleValues","sampleSize","_cachedIndex","settings","DefaultSettings_","pp","validate_interval","seek","linear_scan","forward_scan","giveUpAt","afterEnd_","t1global","beforeStart_","intervalChanged_","interpolate_","copySampleValue_","CubicInterpolant","_weightPrev","_offsetPrev","_weightNext","_offsetNext","endingStart","endingEnd","iPrev","iNext","tPrev","tNext","getSettings_","halfDt","o0","oP","oN","wP","wN","ppp","sP","sN","LinearInterpolant","offset1","offset0","weight1","weight0","DiscreteInterpolant","KeyframeTrack","interpolation","TimeBufferType","ValueBufferType","setInterpolation","DefaultInterpolation","trackType","getInterpolation","factoryMethod","InterpolantFactoryMethodDiscrete","InterpolantFactoryMethodLinear","InterpolantFactoryMethodSmooth","timeOffset","timeScale","startTime","endTime","nKeys","valid","prevTime","currTime","smoothInterpolation","writeIndex","keep","timeNext","offsetP","offsetN","readOffset","writeOffset","TypedKeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","slerpFlat","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","AnimationClip","jsonTracks","frameTime","parseKeyframeTrack","clipTracks","morphTargetSequence","noLoop","numMorphTargets","objectOrClipArray","clipArray","animationToMorphTargets","pattern","morphTarget","animationMorphTargets","clips","CreateFromMorphTargetSequence","addNonemptyTrack","trackName","animationKeys","propertyName","destTracks","clipName","hierarchyTracks","hierarchy","morphTargetNames","morphTargetName","animationKey","boneName","validate","optimize","getTrackTypeForValueTypeName","typeName","Cache","files","file","LoadingManager","onLoad","onProgress","onError","isLoading","itemsLoaded","itemsTotal","urlModifier","handlers","onStart","itemStart","itemEnd","itemError","resolveURL","setURLModifier","addHandler","regex","loader","removeHandler","getHandler","DefaultLoadingManager","Loader","manager","crossOrigin","withCredentials","resourcePath","requestHeader","load","loading","FileLoader","dataUriRegex","dataUriRegexResult","request","mimeType","isBase64","decodeURIComponent","atob","response","responseType","Blob","parser","DOMParser","parseFromString","XMLHttpRequest","callbacks","overrideMimeType","header","setRequestHeader","send","ImageLoader","onImageLoad","onImageError","substr","CubeTextureLoader","urls","setCrossOrigin","setPath","loaded","loadTexture","TextureLoader","isJPEG","search","CurvePath","curves","autoClose","curve","startPoint","endPoint","getLength","curveLengths","getCurveLengths","lens","cacheLengths","sums","getPoints","Path","currentPoint","moveTo","lineTo","aCPx","aCPy","aCP1x","aCP1y","aCP2x","aCP2y","npts","absarc","absellipse","firstPoint","lastPoint","holesPts","getPointsHoles","Light","HemisphereLight","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","_frameExtents","_viewportCount","_viewports","shadowMatrix","viewportIndex","SpotLightShadow","isSpotLightShadow","SpotLight","power","_lightPositionWorld","_lookTarget","PointLightShadow","_cubeDirections","_cubeUps","PointLight","DirectionalLightShadow","isDirectionalLightShadow","DirectionalLight","AmbientLight","RectAreaLight","SphericalHarmonics3","coeff","shBasis","isSphericalHarmonics3","LightProbe","LoaderUtils","TextDecoder","decode","fromCharCode","escape","lastIndexOf","InstancedBufferGeometry","ImageBitmapLoader","createImageBitmap","fetch","fetchOptions","credentials","headers","blob","colorSpaceConversion","imageBitmap","isImageBitmapLoader","ShapePath","subPaths","currentPath","quadraticCurveTo","bezierCurveTo","splineThru","isCCW","noHoles","toShapesNoHoles","inSubpaths","tmpPath","tmpShape","isPointInsidePolygon","inPolygon","polyLen","edgeLowPt","edgeHighPt","edgeDx","edgeDy","perpEdge","solid","holesFirst","betterShapeHoles","newShapes","tmpPoints","tmpHoles","newShapeHoles","mainIdx","ambiguous","toChange","sIdx","sLen","sho","hIdx","ho","hole_unassigned","s2Idx","froms","tos","Font","text","paths","createPaths","toShapes","chars","line_height","yMax","yMin","underlineThickness","char","createPath","glyph","glyphs","familyName","cpx","cpy","cpx1","cpy1","cpx2","cpy2","outline","_cachedOutline","ha","isFont","AudioContext","webkitAudioContext","AudioLoader","setResponseType","setWithCredentials","bufferCopy","decodeAudioData","audioBuffer","HemisphereLightProbe","sky","ground","isHemisphereLightProbe","AmbientLightProbe","isAmbientLightProbe","Audio","gain","createGain","connect","getInput","autoplay","detune","loop","loopStart","loopEnd","playbackRate","isPlaying","hasPlaybackControl","sourceType","_startedAt","_progress","_connected","filters","audioNode","mediaElement","createMediaElementSource","mediaStream","createMediaStreamSource","play","delay","currentTime","createBufferSource","onended","onEnded","setDetune","setPlaybackRate","getOutput","setTargetAtTime","getFilters","setFilters","AudioAnalyser","audio","fftSize","analyser","createAnalyser","frequencyBinCount","getByteFrequencyData","getFrequencyData","PropertyMixer","mixFunction","mixFunctionAdditive","setIdentity","_slerp","_slerpAdditive","_setAdditiveIdentityQuaternion","_workIndex","_select","_setAdditiveIdentityOther","_lerp","_lerpAdditive","_setAdditiveIdentityNumeric","_mixBufferRegion","_mixBufferRegionAdditive","_setIdentity","_origIndex","_addIndex","cumulativeWeight","cumulativeWeightAdditive","useCount","referenceCount","accuIndex","currentWeight","mix","weightAdditive","originalValueOffset","getValue","targetIndex","workOffset","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","targetGroup","optionalParsedPath","parsedPath","PropertyBinding","parseTrackName","_targetGroup","_bindings","subscribe_","firstValidIndex","nCachedObjects_","bindings","unbind","rootNode","node","findNode","nodeName","_getValue_unbound","_setValue_unbound","isAnimationObjectGroup","matches","objectName","objectIndex","propertyIndex","lastDot","bone","getBoneByName","searchNodeSubtree","childNode","subTreeNode","targetObject","resolvedProperty","targetArray","sourceArray","_getValue_unavailable","_setValue_unavailable","nodeProperty","versioning","Versioning","None","NeedsUpdate","MatrixWorldNeedsUpdate","bindingType","BindingType","Direct","ArrayElement","HasFromToArray","EntireArray","GetterByBindingType","SetterByBindingTypeAndVersioning","_getValue_direct","_getValue_array","_getValue_arrayElement","_getValue_toArray","_setValue_direct","_setValue_direct_setNeedsUpdate","_setValue_direct_setMatrixWorldNeedsUpdate","_setValue_array","_setValue_array_setNeedsUpdate","_setValue_array_setMatrixWorldNeedsUpdate","_setValue_arrayElement","_setValue_arrayElement_setNeedsUpdate","_setValue_arrayElement_setMatrixWorldNeedsUpdate","_setValue_fromArray","_setValue_fromArray_setNeedsUpdate","_setValue_fromArray_setMatrixWorldNeedsUpdate","AnimationObjectGroup","_indicesByUUID","_paths","_parsedPaths","_bindingsIndicesByPath","stats","indicesByUUID","parsedPaths","nBindings","knownObject","nObjects","nCachedObjects","firstActiveIndex","lastCachedObject","bindingsForPath","lastCached","lastCachedIndex","firstActiveObject","firstActive","lastObject","indicesByPath","lastBindingsIndex","lastBindings","lastBindingsPath","AnimationAction","mixer","localRoot","_mixer","_clip","_localRoot","nTracks","interpolants","interpolantSettings","_interpolantSettings","_interpolants","_propertyBindings","_cacheIndex","_byClipCacheIndex","_timeScaleInterpolant","_weightInterpolant","_loopCount","_startTime","_effectiveTimeScale","_effectiveWeight","repetitions","paused","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","_activateAction","_deactivateAction","stopFading","stopWarping","_isActiveAction","_scheduleFading","fadeOutAction","warp","fadeOut","fadeIn","fadeInDuration","fadeOutDuration","startEndRatio","endStartRatio","fadeInAction","crossFadeFrom","weightInterpolant","_takeBackControlInterpolant","startTimeScale","endTimeScale","_lendControlInterpolant","timeScaleInterpolant","_root","deltaTime","timeDirection","_updateWeight","timeRunning","_updateTimeScale","clipTime","_updateTime","propertyMixers","accumulateAdditive","accumulate","interpolantValue","loopCount","pingPong","_setEndings","handle_stop","loopDelta","pending","atStart","atEnd","weightNow","weightThen","AnimationMixer","_initMemoryManager","_accuIndex","prototypeAction","rootUuid","bindingsByRoot","_bindingsByRootAndName","bindingsByName","_addInactiveBinding","clipUuid","actionsForClip","_actionsByClip","_bindAction","knownActions","_addInactiveAction","_lendBinding","saveOriginalState","_lendAction","restoreOriginalState","_takeBackBinding","_takeBackAction","_nActiveActions","_nActiveBindings","_controlInterpolants","_nActiveControlInterpolants","controlInterpolants","actionsByClip","actionByRoot","lastInactiveAction","cacheIndex","knownActionsForClip","lastKnownAction","byClipCacheIndex","_removeInactiveBindingsForAction","_removeInactiveBinding","prevIndex","lastActiveIndex","firstInactiveAction","firstInactiveIndex","lastActiveAction","bindingByName","propBinding","lastInactiveBinding","firstInactiveBinding","lastActiveBinding","_controlInterpolantsResultBuffer","__cacheIndex","lastActiveInterpolant","optionalRoot","clipObject","findByName","existingAction","newAction","nActions","timeInSeconds","actionsToRemove","_removeInactiveAction","Uniform","InstancedInterleavedBuffer","GLBufferAttribute","_vector$4","Box2","isBox2","_startP","_startEnd","Line3","clampToLine","startEnd2","startEnd_startP","closestPointToPointParameter","ImmediateRenderObject","_vector$2","_boneMatrix","_matrixWorldInv","SkeletonHelper","getBoneList","isSkeletonHelper","boneList","GridHelper","_floatView","fromPoints","setColors","extractUrlBase","Handlers","empty","isIntersectionBox","isIntersectionSphere","setFromMatrix","flattenToArrayOffset","multiplyVector3","multiplyVector3Array","applyToBufferAttribute","applyToVector3Array","getInverse","extractPosition","getPosition","multiplyToArray","multiplyVector4","rotateAxis","crossVector","rotateX","rotateY","rotateZ","rotateByAxis","makeFrustum","isIntersectionLine","intersectsLine","inverse","isIntersectionPlane","getArea","barycoordFromPoint","midpoint","getMidpoint","prototypenormal","getPlane","extractAllPoints","extrude","makeGeometry","fromAttribute","distanceToManhattan","manhattanDistanceTo","lengthManhattan","setEulerFromRotationMatrix","setEulerFromQuaternion","getPositionFromMatrix","getScaleFromMatrix","getColumnFromMatrix","applyProjection","getChildByName","getObjectByName","renderDepth","getWorldRotation","applyMatrix","eulerOrder","useQuaternion","setDrawMode","drawMode","initBones","setLens","setFocalLength","onlyShadow","shadowCameraFov","shadowCameraLeft","shadowCameraRight","shadowCameraTop","shadowCameraBottom","shadowCameraVisible","shadowDarkness","shadowMapWidth","shadowMapHeight","dynamic","setDynamic","copyIndicesArray","setArray","addIndex","addAttribute","addDrawCall","clearDrawCalls","clearGroups","computeOffsets","removeAttribute","drawcalls","offsets","getArrays","addShapeList","wrapAround","overdraw","wrapRGB","shading","clearTarget","animate","getCurrentRenderTarget","getPrecision","resetGLState","supportsFloatTextures","supportsHalfFloatTextures","supportsStandardDerivatives","supportsCompressedTextureS3TC","supportsCompressedTexturePVRTC","supportsBlendMinMax","supportsInstancedArrays","enableScissorTest","initMaterial","addPrePlugin","addPostPlugin","updateShadowMap","setFaceCulling","allocTextureUnit","setTexture","getActiveMipMapLevel","shadowMapCullFace","vr","gammaInput","gammaOutput","toneMappingWhitePoint","renderReverseSided","renderSingleSided","audioLoader","setBuffer","getData","updateCubeMap","loadTextureCube","loadCompressedTexture","loadCompressedTextureCube","revision","__THREE__","bitmap","IndexedObject","$assign","alphabet","chr","webpackPolyfill","deprecate","CONVERT_TO_STRING","first","second","arraySpeciesConstructor","loadScript","shouldAppend","unloadScript","$loadScript","$unloadScript","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","wmget","wmhas","wmset","facade","STATE","_arrayLikeToArray","arr2","hasSymbol","PolySymbol","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","isBrowser","isESModule","applyToParams","newParams","noop","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","currentLocation","query","searchPos","hashPos","resolveRelativePath","fullPath","stringifyURL","stringifyQuery","stripBase","pathname","startsWith","isSameRouteLocation","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","aliasOf","isSameRouteLocationParamsValue","isEquivalentArray","fromSegments","toSegments","toPosition","segment","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","docRect","elRect","behavior","computeScrollPosition","pageXOffset","pageYOffset","scrollToPosition","scrollToOptions","positionEl","isIdSelector","scrollTo","getScrollKey","history","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","createCurrentLocation","slicePos","pathFromHash","useHistoryListeners","historyState","teardowns","pauseState","popStateHandler","fromState","forward","back","unknown","pauseListeners","listen","teardown","beforeUnloadListener","buildState","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","isRouteLocation","route","isRouteName","START_LOCATION_NORMALIZED","redirectedFrom","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","sensitive","REGEX_CHARS_RE","tokensToParser","extraOptions","score","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","subPattern","avoidDuplicatedSlash","param","compareScoreArray","comparePathParserScore","aScore","bScore","comp","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","previousState","tokens","finalizeSegment","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","matcher","alias","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","mergeOptions","normalizedRecords","aliases","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","insertMatcher","matcherRef","getRoutes","paramsFromLocation","parentMatcher","mergeMetaFields","redirect","beforeEnter","normalizeRecordProps","instances","leaveGuards","Set","updateGuards","enterCallbacks","propsObject","partialOptions","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeURI","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","hasLeadingIM","searchParams","searchParam","eqPos","normalizeQuery","normalizedQuery","useCallbacks","guardToPromiseFn","guard","enterCallbackArray","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","isRouteComponent","__vccOpts","componentPromise","resolved","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","routeMatched","currentMatched","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","RouterLinkImpl","activeClass","exactActiveClass","custom","ariaCurrentValue","link","elClass","getLinkClass","linkActiveClass","linkExactActiveClass","onClick","RouterLink","metaKey","altKey","ctrlKey","defaultPrevented","button","currentTarget","innerValue","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","inheritAttrs","attrs","injectedRoute","routeToDisplay","matchedRouteRef","viewRef","oldInstance","oldName","matchedRoute","ViewComponent","currentName","normalizeSlot","Component","routePropsOption","routeProps","onVnodeUnmounted","vnode","isUnmounted","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","scrollBehavior","scrollRestoration","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","matcherLocation","targetParams","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","targetLocation","shouldRedirect","toLocation","failure","handleScroll","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","canceledNavigationCheck","runGuardQueue","isPush","isFirstNavigation","markAsReady","removeHistoryListener","setupListeners","_from","ready","readyHandlers","errorHandlers","isReady","started","installedApps","beforeEach","beforeResolve","afterEach","$router","reactiveRoute","unmountApp","unmount","promise","recordFrom","recordTo","useRouter","useRoute","anyGlobal","crypto","msCrypto","randomBytes","getRandomValues","throwError","UNSUPPORTED_OPERATION","operation","enforceInternalState","TEMPLATE","simple","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","TO_ENTRIES","Wrapper","NewTargetPrototype","wrappedWellKnownSymbolModule","NAME","activeEffectScope","effectScopeStack","EffectScope","detached","effects","cleanups","scopes","fromParent","cleanup","effectScope","recordEffectScope","effect","getCurrentScope","onScopeDispose","createDep","dep","wasTracked","trackOpBit","newTracked","initDepMarkers","deps","finalizeDepMarkers","ptr","targetMap","effectTrackDepth","maxMarkerBits","effectStack","activeEffect","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","enableTracking","cleanupEffect","resetTracking","onStop","_effect","lazy","shouldTrack","trackStack","pauseTracking","isTracking","depsMap","eventInfo","trackEffects","debuggerEventExtraInfo","trigger","oldValue","oldTarget","triggerEffects","allowRecurse","isNonTrackableKeys","builtInSymbols","createGetter","shallowGet","readonlyGet","shallowReadonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","toRaw","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","isRef","shouldUnwrap","readonly","reactive","createSetter","shallowSet","hadKey","deleteProperty","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","shallowReadonlyHandlers","toReactive","toReadonly","toShallow","getProto","get$1","isShallow","rawTarget","rawKey","has$1","set$1","deleteEntry","hadItems","createForEach","thisArg","observed","createIterableMethod","targetIsMap","isPair","isKeyOnly","innerIterator","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","iteratorMethods","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","shallowReadonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","isExtensible","createReactiveObject","shallowReactive","shallowReadonly","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","isProxy","raw","markRaw","trackRefValue","triggerRefValue","newVal","__v_isRef","createRef","shallowRef","_shallow","_rawValue","_value","rawValue","triggerRef","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","CustomRefImpl","factory","_get","_set","customRef","toRefs","toRef","ObjectRefImpl","_object","_key","ComputedRefImpl","_setter","_dirty","getterOrOptions","debugOptions","setter","cRef","setDevtoolsHook","rawArgs","isModelListener","modelArg","modifiersKey","handlerName","callWithAsyncErrorHandling","onceHandler","emitted","normalizeEmitsOptions","appContext","asMixin","emitsCache","hasExtends","extendEmits","normalizedFromExtend","mixins","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","pushScopeId","popScopeId","withScopeId","withCtx","isNonScopedSlot","_n","renderFnWithContext","_d","setBlockTracking","prevInstance","_c","renderComponentRoot","withProxy","propsOptions","renderCache","setupState","fallthroughAttrs","shapeFlag","proxyToUse","normalizeVNode","getFunctionalFallthrough","filterModelListeners","cloneVNode","dirs","blockStack","handleError","createVNode","Comment","filterSingleRoot","singleRoot","isVNode","shouldUpdateComponent","prevVNode","nextVNode","optimized","prevProps","prevChildren","nextProps","nextChildren","patchFlag","emitsOptions","$stable","hasPropsChanged","dynamicProps","nextKeys","updateHOCHostEl","subTree","isSuspense","__isSuspense","SuspenseImpl","n1","anchor","parentComponent","parentSuspense","isSVG","slotScopeIds","rendererInternals","mountSuspense","patchSuspense","hydrate","hydrateSuspense","createSuspenseBoundary","normalizeSuspenseChildren","Suspense","triggerEvent","eventListener","patch","hiddenContainer","suspense","pendingBranch","ssContent","ssFallback","setActiveBranch","um","newBranch","newFallback","activeBranch","isInFallback","isHydrating","isSameVNodeType","pendingId","timeout","fallback","resume","delayEnter","afterLeave","hasUnresolvedAncestor","queuePostFlushCb","fallbackVNode","mountFallback","setupRenderEffect","isInPendingSuspense","hydratedEl","asyncDep","asyncSetupResult","suspenseId","asyncResolved","handleSetupResult","doRemove","hydrateNode","isSlotChildren","normalizeSuspenseSlot","block","isCompiledSlot","openBlock","currentBlock","closeBlock","singleChild","dynamicChildren","queueEffectWithSuspense","branch","currentInstance","provides","parentProvides","inject","defaultValue","treatDefaultAsFactory","useTransitionState","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","BaseTransitionImpl","appear","persisted","onEnter","onEnterCancelled","onLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","oldInnerChild","transitionKeyChanged","getTransitionKey","leavingHooks","delayLeave","earlyRemove","delayedLeave","leavingVNodesCache","getLeavingNodesForType","_leaveCb","BaseTransition","callHook","hooks","leavingVNode","afterHook","cancelHook","_enterCb","cancelled","isKeepAlive","keepComment","keyedFragmentCount","Fragment","defineComponent","isAsyncWrapper","__asyncLoader","defineAsyncComponent","loadingComponent","errorComponent","suspensible","userOnError","resolvedComp","pendingRequest","retries","retry","thisRequest","userRetry","userFail","createInnerComp","delayed","queueJob","__isKeepAlive","KeepAliveImpl","exclude","sharedContext","_unmount","storageContainer","resetShapeFlag","pruneCache","getComponentName","pruneCacheEntry","activate","queuePostRenderEffect","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","deactivate","da","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","__asyncResolved","cachedVNode","KeepAlive","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","__weh","setCurrentInstance","unsetCurrentInstance","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","shouldCacheAccess","applyOptions","resolveMergedOptions","publicThis","beforeCreate","dataOptions","computedOptions","watchOptions","provideOptions","injectOptions","created","beforeMount","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","directives","checkDuplicateProperties","resolveInjections","unwrapInjectedRef","methodHandler","opt","createWatcher","registerLifecycleHook","_hook","exposed","unwrapRef","normalizeInject","createPathGetter","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","initProps","isStateful","isSSR","InternalObjectKey","propsDefaults","setFullProps","updateProps","rawPrevProps","rawCurrentProps","hasAttrsChanged","kebabKey","resolvePropValue","propsToUpdate","camelizedKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","normalizePropsOptions","propsCache","extendProps","normalizedKey","validatePropName","prop","booleanIndex","getTypeIndex","stringIndex","getType","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","withDirectives","internalInstance","modifiers","invokeDirectiveHook","oldBindings","createAppContext","isNativeTag","errorHandler","warnHandler","compilerOptions","createAppAPI","rootComponent","rootProps","installedPlugins","_uid","_component","_props","_container","_instance","mixin","directive","rootContainer","isHydrate","__vue_app__","hasMismatch","isSVGContainer","namespaceURI","tagName","isComment","createHydrationFunctions","mt","mountComponent","patchProp","nextSibling","insert","createComment","hasChildNodes","flushPostFlushCbs","isFragmentStart","onMismatch","handleMismatch","domType","nextNode","Text","Static","needToAdoptContent","staticCount","hydrateFragment","hydrateElement","locateClosingAsyncAnchor","previousSibling","lastChild","createTextVNode","hydrateChildren","setRef","forcePatchValue","vnodeHooks","onVnodeBeforeMount","textContent","cur","parentVNode","fragmentSlotScopeIds","isFragment","initFeatureFlags","createRenderer","baseCreateRenderer","createHydrationRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","createText","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","hostNextSibling","setScopeId","hostSetScopeId","cloneNode","hostCloneNode","insertStaticContent","hostInsertStaticContent","getNextHostNode","processText","processCommentNode","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","removeStaticNode","mountElement","patchElement","is","mountChildren","unmountChildren","scopeId","needCallTransitionHooks","enter","cloneIfMounted","oldProps","newProps","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","traverseStaticChildren","updateComponent","initialVNode","createComponentInstance","setupComponent","registerDep","updateComponentPreRender","invalidateJob","componentUpdateFn","bu","originNext","nextTree","prevTree","bm","isAsyncWrapperVNode","hydrateSubTree","scopedInitialVNode","flushPreFlushCbs","prevShapeFlag","patchKeyedChildren","patchUnkeyedChildren","oldLength","newLength","commonLength","nextChild","parentAnchor","e2","nextPos","keyToNewIndexMap","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","moveType","needTransition","leave","performLeave","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","bum","_vnode","mc","pbc","createApp","rawRef","oldRawRef","isUnmount","refValue","getExposeProxy","owner","oldRef","doSet","callWithErrorHandling","ch1","ch2","arrI","isTeleport","__isTeleport","isTeleportDisabled","disabled","isTargetSVG","SVGElement","resolveTarget","select","targetSelector","TeleportImpl","mainAnchor","targetAnchor","mount","wasDisabled","currentContainer","currentAnchor","moveTeleport","nextTarget","hydrateTeleport","isReorder","targetNode","_lpa","Teleport","COMPONENTS","DIRECTIVES","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","selfName","registry","disableTracking","vnodeArgsTransformer","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","createBlock","__v_isVNode","transformVNodeArgs","transformer","normalizeKey","normalizeRef","isBlockNode","needFullChildrenNormalization","__v_skip","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","extraProps","mergeRef","mergedProps","mergeProps","flag","createStaticVNode","numberOfNodes","createCommentVNode","asBlock","memo","slotFlag","toMerge","existing","incoming","createSlots","dynamicSlots","renderSlot","noSlotted","isCE","validSlotContent","ensureValidVNode","rendered","vnodes","toHandlers","getPublicInstance","isStatefulComponent","publicPropertiesMap","$el","$data","$props","$attrs","$refs","$parent","$root","$options","$forceUpdate","$watch","instanceWatch","PublicInstanceProxyHandlers","accessCache","normalizedProps","publicGetter","cssModule","__cssModules","RuntimeCompiledPublicInstanceProxyHandlers","unscopables","emptyAppContext","uid$1","exposeProxy","setupContext","rtg","rtc","ec","sp","installWithProxy","setupResult","setupStatefulComponent","createSetupContext","resolvedResult","finishComponentSetup","registerRuntimeCompiler","_compile","_rc","isRuntimeOnly","skipOptions","template","isCustomElement","delimiters","componentCompilerOptions","finalCompilerOptions","createAttrsProxy","classifyRE","classify","displayName","formatComponentName","inferFromRegistry","appWarnHandler","getComponentTrace","warnArgs","formatTrace","currentVNode","normalizedStack","recurseCount","parentInstance","logs","formatTraceEntry","postfix","formatProps","formatProp","throwInDev","contextVNode","exposedInstance","errorInfo","errorCapturedHooks","appErrorHandler","logError","isFlushing","isFlushPending","flushIndex","pendingPreFlushCbs","activePreFlushCbs","preFlushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","currentPreFlushParentJob","findInsertionIndex","middle","middleJobId","getId","job","queueFlush","flushJobs","queueCb","activeQueue","pendingQueue","queuePreFlushCb","seen","parentJob","deduped","watchEffect","doWatch","watchPostEffect","watchSyncEffect","INITIAL_WATCHER_VALUE","immediate","onTrack","onTrigger","forceTrigger","isMultiSource","onInvalidate","baseGetter","isFunction","defineProps","defineEmits","defineExpose","withDefaults","useSlots","useAttrs","mergeDefaults","withAsyncContext","getAwaitable","awaitable","propsOrChildren","ssrContextKey","useSSRContext","initCustomFormatter","withMemo","isMemoSame","_ssrUtils","ssrUtils","resolveFilter","compatUtils","svgNS","doc","staticTemplateCache","nodeOps","multiple","nodeValue","selector","wrapper","patchClass","transitionClasses","_vtc","className","patchStyle","importantRE","setProperty","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","removeAttributeNS","setAttributeNS","isBoolean","patchDOMProp","_a","_getNow","skipTimestampCheck","createEvent","timeStamp","ffMatch","cachedNow","getNow","patchEvent","prevValue","nextValue","invokers","_vei","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","initialValue","attached","patchStopImmediatePropagation","originalStop","stopImmediatePropagation","_stopped","nativeOnRE","shouldSetAsProp","_trueValue","_falseValue","defineCustomElement","hydate","Comp","VueCustomElement","initialProps","def","defineSSRCustomElement","BaseClass","HTMLElement","_def","_resolved","shadowRoot","attachShadow","_setAttr","observer","MutationObserver","attributeName","observe","_resolveDef","_setProp","rawKeys","_getProp","_applyStyles","asyncDef","shouldReflect","useCssModule","useCssVars","setVars","setVarsOnVNode","ob","childList","vars","setVarsOnNode","TRANSITION","ANIMATION","Transition","resolveTransitionProps","DOMTransitionPropsValidators","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","TransitionPropsValidators","hasExplicitCallback","baseProps","durations","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","makeEnterHook","nextFrame","addTransitionClass","whenTransitionEnds","forceReflow","NumberOf","cls","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getTransitionInfo","endEvent","ended","onEnd","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","offsetHeight","positionMap","newPositionMap","TransitionGroupImpl","moveClass","hasCSSTransform","callPendingCbs","recordPosition","movedChildren","applyTranslation","webkitTransform","transitionDuration","_moveCb","cssTransitionProps","TransitionGroup","oldPos","newPos","getModelAssigner","onCompositionStart","composing","onCompositionEnd","initEvent","vModelText","_assign","castToNumber","domValue","vModelCheckbox","_modelValue","elementValue","checked","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","setSelected","_binding","isMultiple","option","optionValue","selectedIndex","vModelDynamic","callModelHook","modelToUse","systemModifiers","modifierGuards","prevent","ctrl","alt","exact","withModifiers","keyNames","esc","space","withKeys","eventKey","vShow","_vod","setDisplay","rendererOptions","enabledHydration","ensureRenderer","ensureHydrationRenderer","containerOrSelector","normalizeContainer","Element","createSSRApp","activeXDocument","documentCreateElement","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","NullProtoObjectViaIFrame","iframeDocument","iframe","JS","NullProtoObject","sha","ripemd","hmac","ripemd160","createIteratorConstructor","setToStringTag","IteratorsCore","KEYS","VALUES","ENTRIES","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","propertyKey","$padEnd","WEBKIT_BUG","padEnd","_objectDestructuringEmpty","functionToString","SHA512","SHA384","regexpFlags","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","NPCG_INCLUDED","PATCH","reCopy","charsAdded","strCopy","feature","detection","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","genFun","mark","awrap","skipTempReset","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","arraySpeciesCreate","IS_CONCAT_SPREADABLE","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","usingIterator","$defineProperty","Attributes","h0","h3","h4","h5","h6","h7","blocks","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","password","salt","dkLen","innerLen","outerKey","dk","incrementCounter","blockmix_salsa8","BY","Yi","_X","arraycopy","blockxor","salsa20_8","Si","srcPos","destPos","checkBufferish","ensureInteger","_scrypt","XY","totalOps","Bi","currentOp","lastPercent10","incrementalSMix","percent10","derivedKey","lib","scrypt","progressCallback","lastProgress","progress","syncScrypt","makeMap","expectsLowerCase","GLOBALS_WHITE_LISTED","isGloballyWhitelisted","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","normalizeStyle","parseStringStyle","listDelimiterRE","propertyDelimiterRE","normalizeClass","normalizeProps","HTML_TAGS","SVG_TAGS","isHTMLTag","isSVGTag","looseCompareArrays","equal","looseEqual","aValidType","isDate","bValidType","getTime","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","toDisplayString","objectToString","isMap","isSet","isPlainObject","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","onRE","isOn","toTypeString","toRawType","isIntegerKey","isReservedProp","cacheStringFunction","hit","camelizeRE","camelize","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","invokeArrayFns","fns","toPrimitive","nativeJoin","ES3_STRINGS","NATIVE_SYMBOL","nativeObjectCreate","getOwnPropertyNamesExternal","getOwnPropertyDescriptorModule","defineWellKnownSymbol","HIDDEN","SYMBOL","TO_PRIMITIVE","ObjectPrototype","$stringify","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","WellKnownSymbolsStore","USE_SETTER","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","$getOwnPropertySymbols","$propertyIsEnumerable","$create","IS_OBJECT_PROTOTYPE","FORCED_JSON_STRINGIFY","$replacer","checkCorrectnessOfIteration","INCORRECT_ITERATION","NativePromise","promiseResolve","NON_GENERIC","real","onFinally","inheritIfRequired","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","third","radix","maxCode","digits","code","NumberWrapper","rotr32","p32","error1","error2","getDevtoolsGlobalHook","getTarget","__VUE_DEVTOOLS_GLOBAL_HOOK__","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","enter-active-class","leave-active-class","toggleTimer","click","removeElement","Timer","startedAt","timer","clearTimeout","POSITIONS","TOP_RIGHT","TOP","TOP_LEFT","BOTTOM_RIGHT","BOTTOM","BOTTOM_LEFT","definePosition","Event","maxToasts","dismissible","pauseOnHover","useDefaultCss","onClose","parentTop","parentBottom","isHovered","createParents","setDefaultCss","setupContainer","showNotice","$on","shouldQueue","childElementCount","queueTimer","correctParent","insertAdjacentElement","pause","stopTimer","$off","vNode","Api","localOptions","Toaster","$toast","TO_STRING_TAG_SUPPORT","FunctionPrototype","FunctionPrototypeToString","nameRE","checkInt","checkInts","arrayish","coerceArray","createArray","targetStart","sourceStart","sourceEnd","convertUtf8","toBytes","fromBytes","convertHex","Hex","numberOfRounds","16","24","32","rcon","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","_prepare","rounds","_Ke","_Kd","roundKeyCount","KC","tk","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperationECB","_aes","ModeOfOperationCBC","iv","_lastCipherblock","ModeOfOperationCFB","segmentSize","_shiftRegister","xorSegment","encrypted","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","_counter","setBytes","increment","ModeOfOperationCTR","_remainingCounter","_remainingCounterIndex","pkcs7pad","padder","pkcs7strip","aesjs","ModeOfOperation","ecb","cbc","cfb","ofb","ctr","utf8","pkcs7","pad","_arrayTest","cancelToken","AbortController","signal","handleReject","rej","once","reason","pr","abort","TIMEOUT_TOKEN","CAF","signalRace","signalAll","generatorFn","tokenOrSignal","signalPr","processTokenOrSignal","aborted","cancelation","_runner","race","ms","intv","timeoutToken","signals","getSignalPr","prs","evtName","onEvt","getNextResult","curValue","nextResult","processResult","prNext","throw","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","c0_hi","c1_hi","c2_hi","s0_512_lo","c0_lo","c1_lo","c2_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c3_hi","c3_lo","ah","bh","cl","dh","dl","eh","fh","fl","gh","hh","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","notify","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","characterData","task","USE_SYMBOL_AS_UID","createWellKnownSymbol","nativeKeys","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","specificCreate","filterReject","HOOK_SETUP","_createForOfIteratorHelper","allowArrayLike","_e","normalCompletion","didErr","_e2","sum32_3","RIPEMD160","Kh","Ah","Bh","Ch","Dh","Eh","rh","NODE_JS","JS_SHA3_NO_NODE_JS","COMMON_JS","JS_SHA3_NO_COMMON_JS","HEX_CHARS","SHAKE_PADDING","KECCAK_PADDING","PADDING","SHIFT","RC","BITS","SHAKE_BITS","OUTPUT_TYPES","createOutputMethod","outputType","Keccak","createShakeOutputMethod","outputBits","createShakeMethod","algorithms","methodNames","algorithm","blockCount","byteCount","outputBlocks","extraBytes","notString","lastByteIndex","finalize","arrayBuffer","c4","c5","c6","c7","c8","c9","b10","b15","b16","b17","b18","b19","b20","b25","b26","b27","b28","b29","b30","b35","b36","b37","b38","b39","b40","b45","b46","b47","b48","b49","_defineProperties","_createClass","protoProps","staticProps","ALPHABET","ALPHABET_MAP","polymodStep","pre","prefixChk","chk","encode","LIMIT","__decode","lowered","uppered","wordChars","decodeUnsafe","inBits","outBits","maxV","toWordsUnsafe","toWords","fromWordsUnsafe","fromWords","_constructorGuard","MAX_SAFE","isBigNumberish","isBigNumber","_warnedToStringRadix","constructorGuard","checkNew","_hex","_isBigNumber","toBigNumber","toBN","other","throwFault","isNegative","BigInt","UNEXPECTED_ARGUMENT","toHex","anyValue","fault","NUMERIC_FAULT","_base36To16","_base16To36","__awaiter","_arguments","adopt","fulfilled","rejected","defineReadOnly","getStatic","resolveProperties","promises","checkProperties","shallowCopy","bigint","_isFrozen","isFrozen","_deepCopy","deepCopy","Description","checkResultErrors","checkErrors","childPath","Coder","localName","_data","_dataLength","_padding","writer","_writeData","paddingOffset","BUFFER_OVERRUN","_getValue","coerceFunc","allowLoose","_coerceFunc","coerce","loose","alignedLength","_peekBytes","readBytes","keccak256","keccak_256","arrayifyInteger","unarrayifyInteger","_encode","_decodeChildren","childOffset","decoded","_decode","consumed","lengthLength","getChecksumAddress","address","expanded","hashed","log10","LN10","ibanLookup","safeDigits","ibanChecksum","checksum","getAddress","isAddress","getIcapAddress","base36","getContractAddress","transaction","nonce","getCreate2Address","initCodeHash","UnicodeNormalizationForm","Utf8ErrorReason","errorFunc","badCodepoint","ignoreFunc","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","replaceFunc","OVERLONG","Utf8ErrorFuncs","ignore","getUtf8CodePoints","extraLength","overlongMask","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","form","checkNormalize","pair","escapeChar","_toEscapedUtf8String","codePoint","_toUtf8String","codePoints","toUtf8String","toUtf8CodePoints","_throwError","writeValue","reader","readValue","coder","pack","coders","arrayValues","unique","INVALID_ARGUMENT","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","writeUpdatableValue","baseOffset","func","appendWriter","unpack","baseReader","subReader","offsetReader","baseType","uniqueNames","defaultChild","checkArgumentCount","writeBytes","NegativeOne","Zero","One","Two","WeiPerEther","MaxUint256","MinInt256","MaxInt256","signed","maxUintValue","bounds","ModifiersBytes","calldata","storage","ModifiersNest","checkModifier","parseParamType","allowIndexed","originalParam","newNode","allowType","indexed","allowParams","verifyType","allowName","allowArray","sibling","readArray","populate","FormatTypes","sighash","minimal","full","paramTypeArray","arrayLength","arrayChildren","fromObject","_isParamType","fromString","isParamType","ParamTypify","parseParams","allowIndex","splitNesting","_isFragment","EventFragment","ErrorFragment","anonymous","inputs","isEventFragment","verifyIdentifier","regexParen","modifier","parseGas","gas","comps","parseModifiers","payable","stateMutability","verifyState","isConstructorFragment","parens","outputs","isFunctionFragment","returns","checkForbidden","fragment","sig","isErrorFragment","regexIdentifier","paramTypeBytes","paramTypeNumber","_getCoder","_getWordSize","_getWriter","_getReader","defaultAbiCoder","_isIndexed","BuiltinErrors","wrapAccessError","fragments","abi","bucket","deploy","functions","events","eventFragment","nameOrSignatureOrSighash","getSighash","matching","nameOrSignatureOrTopic","topichash","getEventTopic","getFunction","getEvent","_abiCoder","_encodeParams","_decodeParams","functionFragment","errorArgs","errorName","errorSignature","builtin","CALL_EXCEPTION","topics","encodeTopic","dataTypes","dataValues","topicHash","nonIndexed","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","topic","decodeEventLog","hexData","errorFragment","_isInterface","_isForkEvent","checkAbstract","gasPrice","getBlock","getGasPrice","maxFeePerGas","maxPriorityFeePerGas","baseFeePerGas","eventName","_isProvider","allowedTransactionKeys","forwardErrors","INSUFFICIENT_FUNDS","NONCE_EXPIRED","REPLACEMENT_UNDERPRICED","blockTag","_checkProvider","provider","getBalance","getTransactionCount","checkTransaction","estimateGas","populateTransaction","signedTx","signTransaction","sendTransaction","network","getNetwork","chainId","getFeeData","resolveName","hasEip1559","feeData","gasLimit","UNPREDICTABLE_GAS_LIMIT","getChainId","_isSigner","_fail","_curve","getCurve","privateKey","keyPair","keyFromPrivate","getPublic","keyFromPublic","publicKey","pub","encodeCompressed","digestBytes","canonical","otherKey","otherKeyPair","computePublicKey","derive","_isSigningKey","recoverPublicKey","rs","recoverPubKey","compressed","signingKey","TransactionTypes","handleAddress","handleNumber","transactionFields","numeric","computeAddress","recoverAddress","formatNumber","accessSetify","storageKeys","storageKey","accessListify","localeCompare","formatAccessList","_serializeEip1559","fields","accessList","_serializeEip2930","_serialize","fieldInfo","transactionType","_parseEipSignature","recid","_parseEip1559","_parseEip2930","_parse","rawTransaction","nameOrPromise","resolveAddresses","paramType","contract","overrides","signer","override","check","resolvedAddress","interface","encodeFunctionData","intrinsic","roValue","leftovers","buildPopulate","buildEstimate","signerOrProvider","buildCall","collapseSimple","deployTransaction","_deployed","decodeFunctionResult","buildSend","txRequest","wait","confirmations","receipt","parsed","parseLog","eventSignature","removeListener","blockHash","getTransaction","transactionHash","getTransactionReceipt","buildDefault","getEventTag","listenerCount","argsCopy","ErrorRunningEvent","contractInterface","prepareEvent","decodeError","addressOrName","Contract","isSigner","isProvider","uniqueFilters","encodeFilterTopics","uniqueSignatures","callStatic","signatures","isInterface","_deployedPromise","getCode","contractAddress","deployed","isIndexed","runningEvent","_runningEvents","_normalizeRunningEvent","_wrappedEmits","_checkRunningEvents","addListener","wrappedEmit","_wrapEvent","getEmit","fromBlockOrBlockhash","toBlock","_getRunningEvent","fromBlock","getLogs","_addEventListener","removeAllListeners","bytecode","bytecodeHex","encodeDeploy","unsignedTx","getDeployTransaction","getContract","compilerOutput","MISSING_ARGUMENT","evm","getInterface","getMultiplier","decimals","formatFixed","fraction","whole","parseFixed","sigFraction","wholeValue","fractionValue","wei","_multiplier","_isFixedNumber","_checkFormat","fromValue","hasFraction","subUnsafe","ONE","toFormat","addUnsafe","bump","BUMP","mulUnsafe","divUnsafe","fixedFormat","decimal","messagePrefix","hashMessage","hexPadRight","padOffset","hexTrue","hexFalse","domainFieldTypes","verifyingContract","domainFieldNames","checkString","domainChecks","getBaseEncoder","boundsUpper","boundsLower","encodeType","links","parents","subtypes","field","encoder","primaryTypes","checkCircular","subtype","primaryType","_types","_encoderCache","_getEncoder","subEncoder","getEncoder","encodedType","encodeData","hashStruct","_visit","domainFields","EIP712Domain","hashDomain","ensCache","visit","domainValues","domainTypes","typesWithDomain","_alphabetMap","_leader","byte","Base58","SupportedAlgorithm","computeHmac","pbkdf2","keylen","hashAlgorithm","hLen","DK","block1","exportWordlist","locale","mnemonic","wordlist","getWord","getWordIndex","lang","_ethers","wordlists","loadWords","langCz","langEn","lookup","dropDiacritic","expand","langEs","langFr","KiYoKu","KyoKu","kana","sortJapanese","langJa","getHangul","langKo","langIt","deltaData","zh_cn","zh_tw","Checks","deltaOffset","country","langZhCn","langZhTw","cz","en","es","fr","ja","ko","MasterSecret","HardenedBit","getUpperMask","getLowerMask","bytes32","base58check","getWordlist","defaultPath","parentFingerprint","chainCode","mnemonicOrPath","compressedPublicKey","IL","IR","ki","Ki","ek","_addPoint","srcMnemonic","phrase","fingerprint","_derive","seed","seedArray","entropyToMnemonic","mnemonicToEntropy","_fromSeed","mnemonicToSeed","extendedKey","NFKD","entropy","entropyBits","checksumBits","checksumMask","remainingBits","isValidMnemonic","getAccountPath","looseArrayify","hexString","zpad","getPassword","NFKC","searchPath","currentChild","matchingChild","uuidV4","hasMnemonic","_isKeystoreAccount","_decrypt","cipher","aesCtr","_getAccount","computedMAC","mnemonicKey","account","mnemonicCiphertext","mnemonicIv","mnemonicCounter","mnemonicAesCtr","fromMnemonic","derivePath","pbkdf2Sync","passwordBytes","prfFunc","_computeKdfKey","pbkdf2Func","scryptFunc","kdf","prf","decryptSync","client","uuidRandom","macPrefix","mac","Crypto","cipherparams","kdfparams","dklen","timestamp","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","gethFilename","_isCrowdsaleAccount","ethaddr","encseed","encryptedSeed","aesCbc","seedHex","seedHexBytes","isCrowdsaleWallet","isKeystoreWallet","getJsonWalletAddress","decryptJsonWallet","decryptJsonWalletSync","isAccount","isSigningKey","_mnemonic","_signingKey","signDigest","populated","resolveNames","extraEntropy","verifyMessage","verifyTypedData","AddressZero","HashZero","EtherSymbol","isRenetworkable","ethDefaultProvider","providers","providerList","InfuraProvider","infura","EtherscanProvider","etherscan","AlchemyProvider","alchemy","PocketProvider","skip","CloudflareProvider","FallbackProvider","quorum","renetwork","etcDefaultProvider","JsonRpcProvider","homestead","ensAddress","_defaultProvider","ropsten","classicMordor","networks","unspecified","mainnet","morden","testnet","rinkeby","kovan","goerli","classic","classicMorden","classicTestnet","classicKotti","xdai","matic","maticmum","bnb","bnbt","defaultProvider","bytes2","createTable","createRangeTable","matchMap","ranges","range","Table_A_1_ranges","Table_B_1_flags","Table_B_2_ranges","Table_B_2_lut_abs","Table_B_2_lut_rel","Table_B_2_complex","Table_C_ranges","_nameprepTableA1","codepoint","_nameprepTableB2","codes","complex","_nameprepTableC","nameprep","codesTableB2","Zeros","Partition","isValidName","namehash","partition","textData","getUrl","referrer","statusCode","statusMessage","statusText","staller","bodyify","_fetchData","connection","processFunc","attemptLimit","throttleLimit","assertArgument","throttleCallback","throttleSlotInterval","allow304","allowGzip","user","allowInsecureAuthentication","authorization","flatHeaders","runningTimeout","makeError","TIMEOUT","requestBody","requestMethod","cancel","runningFetch","attempt","tryAgain","stall","retryAfter","SERVER_ERROR","serverError","throttleRetry","fetchJson","processJsonFunc","hasContentType","poll","ceiling","interval","retryLimit","oncePoll","onceBlock","formats","getDefaultFormats","bigNumber","strictData","allowNull","blockNumber","transactionIndex","uint256","creates","transactionRequest","receiptLog","arrayOf","logIndex","gasUsed","logsBloom","cumulativeGasUsed","effectiveGasPrice","parentHash","difficulty","miner","extraData","transactions","blockWithTransactions","transactionResponse","filterLog","allowFalsish","author","_block","networkId","byzantium","checkKey","checkValue","nullValue","isCommunityResourcable","isCommunityResource","throttleMessage","showThrottleMessage","checkTopic","serializeTopics","sorted","deserializeTopics","isForkEvent","PollableEvents","coinInfos","p2pkh","p2sh","ilk","bytes32ify","base58Encode","formatter","coinType","hexBytes","coinInfo","callAddress","_fetchBytes","_getAddress","ipfs","swarm","keyBytes","defaultFormatter","nextPollId","_events","_emitted","getFormatter","anyNetwork","detectNetwork","_networkPromise","_ready","knownNetwork","_maxInternalBlockNumber","_lastBlockNumber","_pollingInterval","_fastQueryDate","_network","UNKNOWN_ERROR","NETWORK_ERROR","maxAge","_internalBlockNumber","internalBlockNumber","respTime","reqTime","checkInternalBlockNumber","perform","networkError","_setFastBlockNumber","pollId","runners","_getInternalBlockNumber","pollingInterval","previousBlockNumber","eventBlockNumber","polling","currentNetwork","_fastBlockNumber","_fastBlockNumberPromise","detectedNetwork","_poller","_bootstrapPoll","getBlockNumber","_waitForTransaction","replaceable","cancelFuncs","alreadyDone","minedHandler","lastBlockNumber","startBlock","scannedBlock","replaceHandler","mined","getBlockWithTransactions","waitForTransaction","TRANSACTION_REPLACED","_wrapTransaction","_getBlockTag","expectedHash","returnedHash","confirms","signedTransaction","hexTx","_getTransactionRequest","blockHashOrBlockTag","includeTransactions","blockWithTxs","_getBlock","_getFilter","_getResolver","getResolver","reverseName","resolverAddress","NOT_IMPLEMENTED","pollable","_startEvent","eventTag","_stopEvent","errorGas","checkError","responseText","getResult","getLowerCase","addressOrIndex","UncheckedJsonRpcSigner","_address","_index","accounts","fromAddress","estimate","sender","hexlifyTransaction","sendUncheckedTransaction","getPayload","networkOrReady","_nextId","_eventLoopCache","_cache","_uncachedDetectNetwork","getSigner","connectUnchecked","jsonrpc","prepareRequest","_startPending","_pendingFilter","pendingFilter","filterId","hashes","allowExtra","allowed","WS","WebSocket","NextId","_wsReady","_websocket","onopen","_requests","messageEvent","_subs","subscription","fauxPoll","_detectNetwork","rid","subIdPromise","_subIds","subId","_subscribe","emitReceipt","CONNECTING","onerror","_super","apiKey","defaultApiKey","getTransactionPostData","maxFeePerGs","getJsonResult","checkLogTag","getBaseUrl","baseUrl","apikey","getPostUrl","getPostData","procFunc","payloadStr","txhash","postData","topic0","ethusd","endBlock","startblock","endblock","shuffled","checkNetworks","median","maxDelta","nextRid","getPromise","ForwardErrors","ForwardProperties","exposeDebugConfig","normalizedTally","configs","tally","getProcessFunc","_highestBlockNumber","waitForSync","getRunner","currentBlockNumber","getEtherPrice","getStorageAt","providerConfigs","configOrProvider","stallTimeout","priority","inflightWeight","backend","waiting","errorCode","IpcProvider","defaultProjectId","projectId","projectSecret","apiKeyObj","_pendingBatch","inflightRequest","_pendingBatchAggregator","batch","inflight","defaultApplicationIds","applicationId","loadBalancer","applicationSecretKey","buildWeb3LegacyFetcher","sendFunc","fetcher","isMetaMask","isStatus","buildEip1193Fetcher","jsonRpcFetchFunc","subprovider","sendAsync","getDefaultProvider","NodesmithProvider","Web3Provider","regexBytes","regexNumber","regexArray","_pack","tight","formatBytes32String","parseBytes32String","commify","suffix","formatted","formatUnits","unitName","parseUnits","formatEther","parseEther","ether","ordinaryToPrimitive","exoticToPrim","createCommonjsModule","basedir","require","commonjsRequire","minimalisticAssert","utils_1","zero2","utils_1$1","getNAF","naf","getJSF","k1","k2","jsf","m8","m14","m24","cachedProperty","computer","parseBytes","intFromLE","assert$1","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","_fixedNafMul","doubles","_getDoubles","nafW","repr","jpoint","mixedAdd","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jb","decodePoint","pointFromX","compact","precompute","beta","_getBeta","_hasDoubles","dbl","inherits_browser","assert$2","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","short_1","Point","isRed","inf","JPoint","zOne","basis","betas","_getEndoRoots","lambdas","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","len2","_endoSplit","rhs","_endoWnafMulAdd","npoints","ncoeffs","endoMul","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","zinv","zinv2","pz2","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","yyyy","yyyy8","gamma","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","mm","yyu4","kbase","z3","pz3","eqXToP","zs","xc","curve_1","short","edwards","curves_1","PresetCurve","defineCurve","HmacDRBG","predResist","minEntropy","_reseed","reseedInterval","entropyEnc","nonceEnc","pers","persEnc","hmacDrbg","_hmac","kmac","reseed","addEnc","generate","assert$3","KeyPair","priv","_importPrivate","privEnc","_importPublic","pubEnc","fromPublic","fromPrivate","getPrivate","verify","assert$4","Signature","_importDER","Position","place","initial","octetLen","rmPadding","constructLength","octets","slen","toDER","backHalf","rand","assert$5","EC","nh","genKeyPair","drbg","_truncateToN","truncOnly","bkey","kpX","signature$1","sinv","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","elliptic_1","elliptic","eddsa","EC$1","isSurrogatePair","htonl","zero8","join32","SHARED","$includes","addToUnscopables","EXISTS","newPromiseCapability","promiseCapability","variable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","TAG","Pebble","_classCallCheck","SHAM","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","nativeMethod","arg2","forceStringMethod","$exec","originalModule","ArrayIteratorMethods","ArrayValues","normalizeArray","allowAboveRoot","basename","matchedSlash","xs","resolvedPath","resolvedAbsolute","isAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","delimiter","dirname","hasRoot","ext","extname","startDot","startPart","preDotState","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","nativeSymbol","desc","ARRAY_ITERATOR","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","redefineAll","setSpecies","anInstance","iterate","microtask","hostReportErrors","newPromiseCapabilityModule","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromiseConstructorPrototype","newGenericPromiseCapability","DISPATCH_EVENT","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","fail","rejection","onHandleUnhandled","onUnhandled","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","capability","$promiseResolve","remaining","alreadyCalled","_runningInstances","_maxConcurrency","_activeInstances","_enqueuedInstances","isEnqueued","isDropped","_instances","hasStarted","isRunning","isFinished","isCanceling","isCanceled","isSuccessful","isNotDropped","isError","canceledOn","_run","_deferredObject","onFinish","_shouldThrow","_handled","finally","drop","cancelOnUnmount","_isRestartable","_isDropping","_isEnqueuing","_isKeepingLatest","_hasConcurrency","isIdle","_successfulInstances","_notDroppedInstances","performCount","lastSuccessful","firstEnqueued","cancelAll","restartable","_resetModifierFlags","keepLatest","maxConcurrency","pendingTotal","_delta8","_delta32","_pad","PromiseCapability","$$resolve","$$reject","classofRaw","CORRECT_ARGUMENTS","tryGet","nativeSlice","fin","_permanentCensorErrors","_censorErrors","LogLevels","warning","_logLevel","_globalLogger","_checkNormalize","missing","_normalizeError","LogLevel","ErrorCode","HEX","logLevel","_log","levels","INFO","WARNING","messageDetails","expectedCount","MISSING_NEW","censorship","permanent","globalLogger"],"mappings":"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AAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//C0xP,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//C/wC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/Fu9C,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,W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","file":"js/chunk-vendors.3b9b8732.js","sourcesContent":["var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\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","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = toString(requireObjectCoercible($this));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : toString(fillString);\n var intMaxLength = toLength(maxLength);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat.call(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","/**\n * Records what objects are colliding with each other\n */\nclass ObjectCollisionMatrix {\n /**\n * The matrix storage.\n */\n\n /**\n * @todo Remove useless constructor\n */\n constructor() {\n this.matrix = void 0;\n this.matrix = {};\n }\n /**\n * get\n */\n\n\n get(bi, bj) {\n let {\n id: i\n } = bi;\n let {\n id: j\n } = bj;\n\n if (j > i) {\n const temp = j;\n j = i;\n i = temp;\n }\n\n return i + \"-\" + j in this.matrix;\n }\n /**\n * set\n */\n\n\n set(bi, bj, value) {\n let {\n id: i\n } = bi;\n let {\n id: j\n } = bj;\n\n if (j > i) {\n const temp = j;\n j = i;\n i = temp;\n }\n\n if (value) {\n this.matrix[i + \"-\" + j] = true;\n } else {\n delete this.matrix[i + \"-\" + j];\n }\n }\n /**\n * Empty the matrix\n */\n\n\n reset() {\n this.matrix = {};\n }\n /**\n * Set max number of objects\n */\n\n\n setNumObjects(n) {}\n\n}\n\n/**\n * A 3x3 matrix.\n * Authored by {@link http://github.com/schteppe/ schteppe}\n */\nclass Mat3 {\n /**\n * A vector of length 9, containing all matrix elements.\n */\n\n /**\n * @param elements A vector of length 9, containing all matrix elements.\n */\n constructor(elements = [0, 0, 0, 0, 0, 0, 0, 0, 0]) {\n this.elements = void 0;\n this.elements = elements;\n }\n /**\n * Sets the matrix to identity\n * @todo Should perhaps be renamed to `setIdentity()` to be more clear.\n * @todo Create another function that immediately creates an identity matrix eg. `eye()`\n */\n\n\n identity() {\n const e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 0;\n e[4] = 1;\n e[5] = 0;\n e[6] = 0;\n e[7] = 0;\n e[8] = 1;\n }\n /**\n * Set all elements to zero\n */\n\n\n setZero() {\n const e = this.elements;\n e[0] = 0;\n e[1] = 0;\n e[2] = 0;\n e[3] = 0;\n e[4] = 0;\n e[5] = 0;\n e[6] = 0;\n e[7] = 0;\n e[8] = 0;\n }\n /**\n * Sets the matrix diagonal elements from a Vec3\n */\n\n\n setTrace(vector) {\n const e = this.elements;\n e[0] = vector.x;\n e[4] = vector.y;\n e[8] = vector.z;\n }\n /**\n * Gets the matrix diagonal elements\n */\n\n\n getTrace(target = new Vec3()) {\n const e = this.elements;\n target.x = e[0];\n target.y = e[4];\n target.z = e[8];\n return target;\n }\n /**\n * Matrix-Vector multiplication\n * @param v The vector to multiply with\n * @param target Optional, target to save the result in.\n */\n\n\n vmult(v, target = new Vec3()) {\n const e = this.elements;\n const x = v.x;\n const y = v.y;\n const z = v.z;\n target.x = e[0] * x + e[1] * y + e[2] * z;\n target.y = e[3] * x + e[4] * y + e[5] * z;\n target.z = e[6] * x + e[7] * y + e[8] * z;\n return target;\n }\n /**\n * Matrix-scalar multiplication\n */\n\n\n smult(s) {\n for (let i = 0; i < this.elements.length; i++) {\n this.elements[i] *= s;\n }\n }\n /**\n * Matrix multiplication\n * @param matrix Matrix to multiply with from left side.\n */\n\n\n mmult(matrix, target = new Mat3()) {\n const A = this.elements;\n const B = matrix.elements;\n const T = target.elements;\n const a11 = A[0],\n a12 = A[1],\n a13 = A[2],\n a21 = A[3],\n a22 = A[4],\n a23 = A[5],\n a31 = A[6],\n a32 = A[7],\n a33 = A[8];\n const b11 = B[0],\n b12 = B[1],\n b13 = B[2],\n b21 = B[3],\n b22 = B[4],\n b23 = B[5],\n b31 = B[6],\n b32 = B[7],\n b33 = B[8];\n T[0] = a11 * b11 + a12 * b21 + a13 * b31;\n T[1] = a11 * b12 + a12 * b22 + a13 * b32;\n T[2] = a11 * b13 + a12 * b23 + a13 * b33;\n T[3] = a21 * b11 + a22 * b21 + a23 * b31;\n T[4] = a21 * b12 + a22 * b22 + a23 * b32;\n T[5] = a21 * b13 + a22 * b23 + a23 * b33;\n T[6] = a31 * b11 + a32 * b21 + a33 * b31;\n T[7] = a31 * b12 + a32 * b22 + a33 * b32;\n T[8] = a31 * b13 + a32 * b23 + a33 * b33;\n return target;\n }\n /**\n * Scale each column of the matrix\n */\n\n\n scale(vector, target = new Mat3()) {\n const e = this.elements;\n const t = target.elements;\n\n for (let i = 0; i !== 3; i++) {\n t[3 * i + 0] = vector.x * e[3 * i + 0];\n t[3 * i + 1] = vector.y * e[3 * i + 1];\n t[3 * i + 2] = vector.z * e[3 * i + 2];\n }\n\n return target;\n }\n /**\n * Solve Ax=b\n * @param b The right hand side\n * @param target Optional. Target vector to save in.\n * @return The solution x\n * @todo should reuse arrays\n */\n\n\n solve(b, target = new Vec3()) {\n // Construct equations\n const nr = 3; // num rows\n\n const nc = 4; // num cols\n\n const eqns = [];\n let i;\n let j;\n\n for (i = 0; i < nr * nc; i++) {\n eqns.push(0);\n }\n\n for (i = 0; i < 3; i++) {\n for (j = 0; j < 3; j++) {\n eqns[i + nc * j] = this.elements[i + 3 * j];\n }\n }\n\n eqns[3 + 4 * 0] = b.x;\n eqns[3 + 4 * 1] = b.y;\n eqns[3 + 4 * 2] = b.z; // Compute right upper triangular version of the matrix - Gauss elimination\n\n let n = 3;\n const k = n;\n let np;\n const kp = 4; // num rows\n\n let p;\n\n do {\n i = k - n;\n\n if (eqns[i + nc * i] === 0) {\n // the pivot is null, swap lines\n for (j = i + 1; j < k; j++) {\n if (eqns[i + nc * j] !== 0) {\n np = kp;\n\n do {\n // do ligne( i ) = ligne( i ) + ligne( k )\n p = kp - np;\n eqns[p + nc * i] += eqns[p + nc * j];\n } while (--np);\n\n break;\n }\n }\n }\n\n if (eqns[i + nc * i] !== 0) {\n for (j = i + 1; j < k; j++) {\n const multiplier = eqns[i + nc * j] / eqns[i + nc * i];\n np = kp;\n\n do {\n // do ligne( k ) = ligne( k ) - multiplier * ligne( i )\n p = kp - np;\n eqns[p + nc * j] = p <= i ? 0 : eqns[p + nc * j] - eqns[p + nc * i] * multiplier;\n } while (--np);\n }\n }\n } while (--n); // Get the solution\n\n\n target.z = eqns[2 * nc + 3] / eqns[2 * nc + 2];\n target.y = (eqns[1 * nc + 3] - eqns[1 * nc + 2] * target.z) / eqns[1 * nc + 1];\n target.x = (eqns[0 * nc + 3] - eqns[0 * nc + 2] * target.z - eqns[0 * nc + 1] * target.y) / eqns[0 * nc + 0];\n\n if (isNaN(target.x) || isNaN(target.y) || isNaN(target.z) || target.x === Infinity || target.y === Infinity || target.z === Infinity) {\n throw \"Could not solve equation! Got x=[\" + target.toString() + \"], b=[\" + b.toString() + \"], A=[\" + this.toString() + \"]\";\n }\n\n return target;\n }\n /**\n * Get an element in the matrix by index. Index starts at 0, not 1!!!\n * @param value If provided, the matrix element will be set to this value.\n */\n\n\n e(row, column, value) {\n if (value === undefined) {\n return this.elements[column + 3 * row];\n } else {\n // Set value\n this.elements[column + 3 * row] = value;\n }\n }\n /**\n * Copy another matrix into this matrix object.\n */\n\n\n copy(matrix) {\n for (let i = 0; i < matrix.elements.length; i++) {\n this.elements[i] = matrix.elements[i];\n }\n\n return this;\n }\n /**\n * Returns a string representation of the matrix.\n */\n\n\n toString() {\n let r = '';\n const sep = ',';\n\n for (let i = 0; i < 9; i++) {\n r += this.elements[i] + sep;\n }\n\n return r;\n }\n /**\n * reverse the matrix\n * @param target Target matrix to save in.\n * @return The solution x\n */\n\n\n reverse(target = new Mat3()) {\n // Construct equations\n const nr = 3; // num rows\n\n const nc = 6; // num cols\n\n const eqns = reverse_eqns;\n let i;\n let j;\n\n for (i = 0; i < 3; i++) {\n for (j = 0; j < 3; j++) {\n eqns[i + nc * j] = this.elements[i + 3 * j];\n }\n }\n\n eqns[3 + 6 * 0] = 1;\n eqns[3 + 6 * 1] = 0;\n eqns[3 + 6 * 2] = 0;\n eqns[4 + 6 * 0] = 0;\n eqns[4 + 6 * 1] = 1;\n eqns[4 + 6 * 2] = 0;\n eqns[5 + 6 * 0] = 0;\n eqns[5 + 6 * 1] = 0;\n eqns[5 + 6 * 2] = 1; // Compute right upper triangular version of the matrix - Gauss elimination\n\n let n = 3;\n const k = n;\n let np;\n const kp = nc; // num rows\n\n let p;\n\n do {\n i = k - n;\n\n if (eqns[i + nc * i] === 0) {\n // the pivot is null, swap lines\n for (j = i + 1; j < k; j++) {\n if (eqns[i + nc * j] !== 0) {\n np = kp;\n\n do {\n // do line( i ) = line( i ) + line( k )\n p = kp - np;\n eqns[p + nc * i] += eqns[p + nc * j];\n } while (--np);\n\n break;\n }\n }\n }\n\n if (eqns[i + nc * i] !== 0) {\n for (j = i + 1; j < k; j++) {\n const multiplier = eqns[i + nc * j] / eqns[i + nc * i];\n np = kp;\n\n do {\n // do line( k ) = line( k ) - multiplier * line( i )\n p = kp - np;\n eqns[p + nc * j] = p <= i ? 0 : eqns[p + nc * j] - eqns[p + nc * i] * multiplier;\n } while (--np);\n }\n }\n } while (--n); // eliminate the upper left triangle of the matrix\n\n\n i = 2;\n\n do {\n j = i - 1;\n\n do {\n const multiplier = eqns[i + nc * j] / eqns[i + nc * i];\n np = nc;\n\n do {\n p = nc - np;\n eqns[p + nc * j] = eqns[p + nc * j] - eqns[p + nc * i] * multiplier;\n } while (--np);\n } while (j--);\n } while (--i); // operations on the diagonal\n\n\n i = 2;\n\n do {\n const multiplier = 1 / eqns[i + nc * i];\n np = nc;\n\n do {\n p = nc - np;\n eqns[p + nc * i] = eqns[p + nc * i] * multiplier;\n } while (--np);\n } while (i--);\n\n i = 2;\n\n do {\n j = 2;\n\n do {\n p = eqns[nr + j + nc * i];\n\n if (isNaN(p) || p === Infinity) {\n throw \"Could not reverse! A=[\" + this.toString() + \"]\";\n }\n\n target.e(i, j, p);\n } while (j--);\n } while (i--);\n\n return target;\n }\n /**\n * Set the matrix from a quaterion\n */\n\n\n setRotationFromQuaternion(q) {\n const x = q.x;\n const y = q.y;\n const z = q.z;\n const w = q.w;\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n const e = this.elements;\n e[3 * 0 + 0] = 1 - (yy + zz);\n e[3 * 0 + 1] = xy - wz;\n e[3 * 0 + 2] = xz + wy;\n e[3 * 1 + 0] = xy + wz;\n e[3 * 1 + 1] = 1 - (xx + zz);\n e[3 * 1 + 2] = yz - wx;\n e[3 * 2 + 0] = xz - wy;\n e[3 * 2 + 1] = yz + wx;\n e[3 * 2 + 2] = 1 - (xx + yy);\n return this;\n }\n /**\n * Transpose the matrix\n * @param target Optional. Where to store the result.\n * @return The target Mat3, or a new Mat3 if target was omitted.\n */\n\n\n transpose(target = new Mat3()) {\n const M = this.elements;\n const T = target.elements;\n let tmp; //Set diagonals\n\n T[0] = M[0];\n T[4] = M[4];\n T[8] = M[8];\n tmp = M[1];\n T[1] = M[3];\n T[3] = tmp;\n tmp = M[2];\n T[2] = M[6];\n T[6] = tmp;\n tmp = M[5];\n T[5] = M[7];\n T[7] = tmp;\n return target;\n }\n\n}\nconst reverse_eqns = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n/**\n * 3-dimensional vector\n * @example\n * const v = new Vec3(1, 2, 3)\n * console.log('x=' + v.x) // x=1\n */\n\nclass Vec3 {\n constructor(x = 0.0, y = 0.0, z = 0.0) {\n this.x = void 0;\n this.y = void 0;\n this.z = void 0;\n this.x = x;\n this.y = y;\n this.z = z;\n }\n /**\n * Vector cross product\n * @param target Optional target to save in.\n */\n\n\n cross(vector, target = new Vec3()) {\n const vx = vector.x;\n const vy = vector.y;\n const vz = vector.z;\n const x = this.x;\n const y = this.y;\n const z = this.z;\n target.x = y * vz - z * vy;\n target.y = z * vx - x * vz;\n target.z = x * vy - y * vx;\n return target;\n }\n /**\n * Set the vectors' 3 elements\n */\n\n\n set(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n /**\n * Set all components of the vector to zero.\n */\n\n\n setZero() {\n this.x = this.y = this.z = 0;\n }\n /**\n * Vector addition\n */\n\n\n vadd(vector, target) {\n if (target) {\n target.x = vector.x + this.x;\n target.y = vector.y + this.y;\n target.z = vector.z + this.z;\n } else {\n return new Vec3(this.x + vector.x, this.y + vector.y, this.z + vector.z);\n }\n }\n /**\n * Vector subtraction\n * @param target Optional target to save in.\n */\n\n\n vsub(vector, target) {\n if (target) {\n target.x = this.x - vector.x;\n target.y = this.y - vector.y;\n target.z = this.z - vector.z;\n } else {\n return new Vec3(this.x - vector.x, this.y - vector.y, this.z - vector.z);\n }\n }\n /**\n * Get the cross product matrix a_cross from a vector, such that a x b = a_cross * b = c\n *\n * See {@link https://www8.cs.umu.se/kurser/TDBD24/VT06/lectures/Lecture6.pdf Umeå University Lecture}\n */\n\n\n crossmat() {\n return new Mat3([0, -this.z, this.y, this.z, 0, -this.x, -this.y, this.x, 0]);\n }\n /**\n * Normalize the vector. Note that this changes the values in the vector.\n * @return Returns the norm of the vector\n */\n\n\n normalize() {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n const n = Math.sqrt(x * x + y * y + z * z);\n\n if (n > 0.0) {\n const invN = 1 / n;\n this.x *= invN;\n this.y *= invN;\n this.z *= invN;\n } else {\n // Make something up\n this.x = 0;\n this.y = 0;\n this.z = 0;\n }\n\n return n;\n }\n /**\n * Get the version of this vector that is of length 1.\n * @param target Optional target to save in\n * @return Returns the unit vector\n */\n\n\n unit(target = new Vec3()) {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n let ninv = Math.sqrt(x * x + y * y + z * z);\n\n if (ninv > 0.0) {\n ninv = 1.0 / ninv;\n target.x = x * ninv;\n target.y = y * ninv;\n target.z = z * ninv;\n } else {\n target.x = 1;\n target.y = 0;\n target.z = 0;\n }\n\n return target;\n }\n /**\n * Get the length of the vector\n */\n\n\n length() {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n return Math.sqrt(x * x + y * y + z * z);\n }\n /**\n * Get the squared length of the vector.\n */\n\n\n lengthSquared() {\n return this.dot(this);\n }\n /**\n * Get distance from this point to another point\n */\n\n\n distanceTo(p) {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n const px = p.x;\n const py = p.y;\n const pz = p.z;\n return Math.sqrt((px - x) * (px - x) + (py - y) * (py - y) + (pz - z) * (pz - z));\n }\n /**\n * Get squared distance from this point to another point\n */\n\n\n distanceSquared(p) {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n const px = p.x;\n const py = p.y;\n const pz = p.z;\n return (px - x) * (px - x) + (py - y) * (py - y) + (pz - z) * (pz - z);\n }\n /**\n * Multiply all the components of the vector with a scalar.\n * @param target The vector to save the result in.\n */\n\n\n scale(scalar, target = new Vec3()) {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n target.x = scalar * x;\n target.y = scalar * y;\n target.z = scalar * z;\n return target;\n }\n /**\n * Multiply the vector with an other vector, component-wise.\n * @param target The vector to save the result in.\n */\n\n\n vmul(vector, target = new Vec3()) {\n target.x = vector.x * this.x;\n target.y = vector.y * this.y;\n target.z = vector.z * this.z;\n return target;\n }\n /**\n * Scale a vector and add it to this vector. Save the result in \"target\". (target = this + vector * scalar)\n * @param target The vector to save the result in.\n */\n\n\n addScaledVector(scalar, vector, target = new Vec3()) {\n target.x = this.x + scalar * vector.x;\n target.y = this.y + scalar * vector.y;\n target.z = this.z + scalar * vector.z;\n return target;\n }\n /**\n * Calculate dot product\n * @param vector\n */\n\n\n dot(vector) {\n return this.x * vector.x + this.y * vector.y + this.z * vector.z;\n }\n\n isZero() {\n return this.x === 0 && this.y === 0 && this.z === 0;\n }\n /**\n * Make the vector point in the opposite direction.\n * @param target Optional target to save in\n */\n\n\n negate(target = new Vec3()) {\n target.x = -this.x;\n target.y = -this.y;\n target.z = -this.z;\n return target;\n }\n /**\n * Compute two artificial tangents to the vector\n * @param t1 Vector object to save the first tangent in\n * @param t2 Vector object to save the second tangent in\n */\n\n\n tangents(t1, t2) {\n const norm = this.length();\n\n if (norm > 0.0) {\n const n = Vec3_tangents_n;\n const inorm = 1 / norm;\n n.set(this.x * inorm, this.y * inorm, this.z * inorm);\n const randVec = Vec3_tangents_randVec;\n\n if (Math.abs(n.x) < 0.9) {\n randVec.set(1, 0, 0);\n n.cross(randVec, t1);\n } else {\n randVec.set(0, 1, 0);\n n.cross(randVec, t1);\n }\n\n n.cross(t1, t2);\n } else {\n // The normal length is zero, make something up\n t1.set(1, 0, 0);\n t2.set(0, 1, 0);\n }\n }\n /**\n * Converts to a more readable format\n */\n\n\n toString() {\n return this.x + \",\" + this.y + \",\" + this.z;\n }\n /**\n * Converts to an array\n */\n\n\n toArray() {\n return [this.x, this.y, this.z];\n }\n /**\n * Copies value of source to this vector.\n */\n\n\n copy(vector) {\n this.x = vector.x;\n this.y = vector.y;\n this.z = vector.z;\n return this;\n }\n /**\n * Do a linear interpolation between two vectors\n * @param t A number between 0 and 1. 0 will make this function return u, and 1 will make it return v. Numbers in between will generate a vector in between them.\n */\n\n\n lerp(vector, t, target) {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n target.x = x + (vector.x - x) * t;\n target.y = y + (vector.y - y) * t;\n target.z = z + (vector.z - z) * t;\n }\n /**\n * Check if a vector equals is almost equal to another one.\n */\n\n\n almostEquals(vector, precision = 1e-6) {\n if (Math.abs(this.x - vector.x) > precision || Math.abs(this.y - vector.y) > precision || Math.abs(this.z - vector.z) > precision) {\n return false;\n }\n\n return true;\n }\n /**\n * Check if a vector is almost zero\n */\n\n\n almostZero(precision = 1e-6) {\n if (Math.abs(this.x) > precision || Math.abs(this.y) > precision || Math.abs(this.z) > precision) {\n return false;\n }\n\n return true;\n }\n /**\n * Check if the vector is anti-parallel to another vector.\n * @param precision Set to zero for exact comparisons\n */\n\n\n isAntiparallelTo(vector, precision) {\n this.negate(antip_neg);\n return antip_neg.almostEquals(vector, precision);\n }\n /**\n * Clone the vector\n */\n\n\n clone() {\n return new Vec3(this.x, this.y, this.z);\n }\n\n}\nVec3.ZERO = void 0;\nVec3.UNIT_X = void 0;\nVec3.UNIT_Y = void 0;\nVec3.UNIT_Z = void 0;\nVec3.ZERO = new Vec3(0, 0, 0);\nVec3.UNIT_X = new Vec3(1, 0, 0);\nVec3.UNIT_Y = new Vec3(0, 1, 0);\nVec3.UNIT_Z = new Vec3(0, 0, 1);\nconst Vec3_tangents_n = new Vec3();\nconst Vec3_tangents_randVec = new Vec3();\nconst antip_neg = new Vec3();\n\n/**\n * Axis aligned bounding box class.\n */\nclass AABB {\n /**\n * The lower bound of the bounding box\n */\n\n /**\n * The upper bound of the bounding box\n */\n constructor(options = {}) {\n this.lowerBound = void 0;\n this.upperBound = void 0;\n this.lowerBound = new Vec3();\n this.upperBound = new Vec3();\n\n if (options.lowerBound) {\n this.lowerBound.copy(options.lowerBound);\n }\n\n if (options.upperBound) {\n this.upperBound.copy(options.upperBound);\n }\n }\n /**\n * Set the AABB bounds from a set of points.\n * @param points An array of Vec3's.\n * @return The self object\n */\n\n\n setFromPoints(points, position, quaternion, skinSize) {\n const l = this.lowerBound;\n const u = this.upperBound;\n const q = quaternion; // Set to the first point\n\n l.copy(points[0]);\n\n if (q) {\n q.vmult(l, l);\n }\n\n u.copy(l);\n\n for (let i = 1; i < points.length; i++) {\n let p = points[i];\n\n if (q) {\n q.vmult(p, tmp$1);\n p = tmp$1;\n }\n\n if (p.x > u.x) {\n u.x = p.x;\n }\n\n if (p.x < l.x) {\n l.x = p.x;\n }\n\n if (p.y > u.y) {\n u.y = p.y;\n }\n\n if (p.y < l.y) {\n l.y = p.y;\n }\n\n if (p.z > u.z) {\n u.z = p.z;\n }\n\n if (p.z < l.z) {\n l.z = p.z;\n }\n } // Add offset\n\n\n if (position) {\n position.vadd(l, l);\n position.vadd(u, u);\n }\n\n if (skinSize) {\n l.x -= skinSize;\n l.y -= skinSize;\n l.z -= skinSize;\n u.x += skinSize;\n u.y += skinSize;\n u.z += skinSize;\n }\n\n return this;\n }\n /**\n * Copy bounds from an AABB to this AABB\n * @param aabb Source to copy from\n * @return The this object, for chainability\n */\n\n\n copy(aabb) {\n this.lowerBound.copy(aabb.lowerBound);\n this.upperBound.copy(aabb.upperBound);\n return this;\n }\n /**\n * Clone an AABB\n */\n\n\n clone() {\n return new AABB().copy(this);\n }\n /**\n * Extend this AABB so that it covers the given AABB too.\n */\n\n\n extend(aabb) {\n this.lowerBound.x = Math.min(this.lowerBound.x, aabb.lowerBound.x);\n this.upperBound.x = Math.max(this.upperBound.x, aabb.upperBound.x);\n this.lowerBound.y = Math.min(this.lowerBound.y, aabb.lowerBound.y);\n this.upperBound.y = Math.max(this.upperBound.y, aabb.upperBound.y);\n this.lowerBound.z = Math.min(this.lowerBound.z, aabb.lowerBound.z);\n this.upperBound.z = Math.max(this.upperBound.z, aabb.upperBound.z);\n }\n /**\n * Returns true if the given AABB overlaps this AABB.\n */\n\n\n overlaps(aabb) {\n const l1 = this.lowerBound;\n const u1 = this.upperBound;\n const l2 = aabb.lowerBound;\n const u2 = aabb.upperBound; // l2 u2\n // |---------|\n // |--------|\n // l1 u1\n\n const overlapsX = l2.x <= u1.x && u1.x <= u2.x || l1.x <= u2.x && u2.x <= u1.x;\n const overlapsY = l2.y <= u1.y && u1.y <= u2.y || l1.y <= u2.y && u2.y <= u1.y;\n const overlapsZ = l2.z <= u1.z && u1.z <= u2.z || l1.z <= u2.z && u2.z <= u1.z;\n return overlapsX && overlapsY && overlapsZ;\n } // Mostly for debugging\n\n\n volume() {\n const l = this.lowerBound;\n const u = this.upperBound;\n return (u.x - l.x) * (u.y - l.y) * (u.z - l.z);\n }\n /**\n * Returns true if the given AABB is fully contained in this AABB.\n */\n\n\n contains(aabb) {\n const l1 = this.lowerBound;\n const u1 = this.upperBound;\n const l2 = aabb.lowerBound;\n const u2 = aabb.upperBound; // l2 u2\n // |---------|\n // |---------------|\n // l1 u1\n\n return l1.x <= l2.x && u1.x >= u2.x && l1.y <= l2.y && u1.y >= u2.y && l1.z <= l2.z && u1.z >= u2.z;\n }\n\n getCorners(a, b, c, d, e, f, g, h) {\n const l = this.lowerBound;\n const u = this.upperBound;\n a.copy(l);\n b.set(u.x, l.y, l.z);\n c.set(u.x, u.y, l.z);\n d.set(l.x, u.y, u.z);\n e.set(u.x, l.y, u.z);\n f.set(l.x, u.y, l.z);\n g.set(l.x, l.y, u.z);\n h.copy(u);\n }\n /**\n * Get the representation of an AABB in another frame.\n * @return The \"target\" AABB object.\n */\n\n\n toLocalFrame(frame, target) {\n const corners = transformIntoFrame_corners;\n const a = corners[0];\n const b = corners[1];\n const c = corners[2];\n const d = corners[3];\n const e = corners[4];\n const f = corners[5];\n const g = corners[6];\n const h = corners[7]; // Get corners in current frame\n\n this.getCorners(a, b, c, d, e, f, g, h); // Transform them to new local frame\n\n for (let i = 0; i !== 8; i++) {\n const corner = corners[i];\n frame.pointToLocal(corner, corner);\n }\n\n return target.setFromPoints(corners);\n }\n /**\n * Get the representation of an AABB in the global frame.\n * @return The \"target\" AABB object.\n */\n\n\n toWorldFrame(frame, target) {\n const corners = transformIntoFrame_corners;\n const a = corners[0];\n const b = corners[1];\n const c = corners[2];\n const d = corners[3];\n const e = corners[4];\n const f = corners[5];\n const g = corners[6];\n const h = corners[7]; // Get corners in current frame\n\n this.getCorners(a, b, c, d, e, f, g, h); // Transform them to new local frame\n\n for (let i = 0; i !== 8; i++) {\n const corner = corners[i];\n frame.pointToWorld(corner, corner);\n }\n\n return target.setFromPoints(corners);\n }\n /**\n * Check if the AABB is hit by a ray.\n */\n\n\n overlapsRay(ray) {\n const {\n direction,\n from\n } = ray; // const t = 0\n // ray.direction is unit direction vector of ray\n\n const dirFracX = 1 / direction.x;\n const dirFracY = 1 / direction.y;\n const dirFracZ = 1 / direction.z; // this.lowerBound is the corner of AABB with minimal coordinates - left bottom, rt is maximal corner\n\n const t1 = (this.lowerBound.x - from.x) * dirFracX;\n const t2 = (this.upperBound.x - from.x) * dirFracX;\n const t3 = (this.lowerBound.y - from.y) * dirFracY;\n const t4 = (this.upperBound.y - from.y) * dirFracY;\n const t5 = (this.lowerBound.z - from.z) * dirFracZ;\n const t6 = (this.upperBound.z - from.z) * dirFracZ; // const tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4)));\n // const tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4)));\n\n const tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4)), Math.min(t5, t6));\n const tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4)), Math.max(t5, t6)); // if tmax < 0, ray (line) is intersecting AABB, but whole AABB is behing us\n\n if (tmax < 0) {\n //t = tmax;\n return false;\n } // if tmin > tmax, ray doesn't intersect AABB\n\n\n if (tmin > tmax) {\n //t = tmax;\n return false;\n }\n\n return true;\n }\n\n}\nconst tmp$1 = new Vec3();\nconst transformIntoFrame_corners = [new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3()];\n\n/**\n * Collision \"matrix\".\n * It's actually a triangular-shaped array of whether two bodies are touching this step, for reference next step\n */\nclass ArrayCollisionMatrix {\n /**\n * The matrix storage.\n */\n constructor() {\n this.matrix = void 0;\n this.matrix = [];\n }\n /**\n * Get an element\n */\n\n\n get(bi, bj) {\n let {\n index: i\n } = bi;\n let {\n index: j\n } = bj;\n\n if (j > i) {\n const temp = j;\n j = i;\n i = temp;\n }\n\n return this.matrix[(i * (i + 1) >> 1) + j - 1];\n }\n /**\n * Set an element\n */\n\n\n set(bi, bj, value) {\n let {\n index: i\n } = bi;\n let {\n index: j\n } = bj;\n\n if (j > i) {\n const temp = j;\n j = i;\n i = temp;\n }\n\n this.matrix[(i * (i + 1) >> 1) + j - 1] = value ? 1 : 0;\n }\n /**\n * Sets all elements to zero\n */\n\n\n reset() {\n for (let i = 0, l = this.matrix.length; i !== l; i++) {\n this.matrix[i] = 0;\n }\n }\n /**\n * Sets the max number of objects\n */\n\n\n setNumObjects(n) {\n this.matrix.length = n * (n - 1) >> 1;\n }\n\n}\n\n/**\n * Base class for objects that dispatches events.\n */\nclass EventTarget {\n constructor() {\n this._listeners = void 0;\n }\n\n /**\n * Add an event listener\n * @return The self object, for chainability.\n */\n addEventListener(type, listener) {\n if (this._listeners === undefined) {\n this._listeners = {};\n }\n\n const listeners = this._listeners;\n\n if (listeners[type] === undefined) {\n listeners[type] = [];\n }\n\n if (!listeners[type].includes(listener)) {\n listeners[type].push(listener);\n }\n\n return this;\n }\n /**\n * Check if an event listener is added\n */\n\n\n hasEventListener(type, listener) {\n if (this._listeners === undefined) {\n return false;\n }\n\n const listeners = this._listeners;\n\n if (listeners[type] !== undefined && listeners[type].includes(listener)) {\n return true;\n }\n\n return false;\n }\n /**\n * Check if any event listener of the given type is added\n */\n\n\n hasAnyEventListener(type) {\n if (this._listeners === undefined) {\n return false;\n }\n\n const listeners = this._listeners;\n return listeners[type] !== undefined;\n }\n /**\n * Remove an event listener\n * @return The self object, for chainability.\n */\n\n\n removeEventListener(type, listener) {\n if (this._listeners === undefined) {\n return this;\n }\n\n const listeners = this._listeners;\n\n if (listeners[type] === undefined) {\n return this;\n }\n\n const index = listeners[type].indexOf(listener);\n\n if (index !== -1) {\n listeners[type].splice(index, 1);\n }\n\n return this;\n }\n /**\n * Emit an event.\n * @return The self object, for chainability.\n */\n\n\n dispatchEvent(event) {\n if (this._listeners === undefined) {\n return this;\n }\n\n const listeners = this._listeners;\n const listenerArray = listeners[event.type];\n\n if (listenerArray !== undefined) {\n event.target = this;\n\n for (let i = 0, l = listenerArray.length; i < l; i++) {\n listenerArray[i].call(this, event);\n }\n }\n\n return this;\n }\n\n}\n\n/**\n * A Quaternion describes a rotation in 3D space. The Quaternion is mathematically defined as Q = x*i + y*j + z*k + w, where (i,j,k) are imaginary basis vectors. (x,y,z) can be seen as a vector related to the axis of rotation, while the real multiplier, w, is related to the amount of rotation.\n * @param x Multiplier of the imaginary basis vector i.\n * @param y Multiplier of the imaginary basis vector j.\n * @param z Multiplier of the imaginary basis vector k.\n * @param w Multiplier of the real part.\n * @see http://en.wikipedia.org/wiki/Quaternion\n */\n\nclass Quaternion {\n constructor(x = 0, y = 0, z = 0, w = 1) {\n this.x = void 0;\n this.y = void 0;\n this.z = void 0;\n this.w = void 0;\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n /**\n * Set the value of the quaternion.\n */\n\n\n set(x, y, z, w) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n /**\n * Convert to a readable format\n * @return \"x,y,z,w\"\n */\n\n\n toString() {\n return this.x + \",\" + this.y + \",\" + this.z + \",\" + this.w;\n }\n /**\n * Convert to an Array\n * @return [x, y, z, w]\n */\n\n\n toArray() {\n return [this.x, this.y, this.z, this.w];\n }\n /**\n * Set the quaternion components given an axis and an angle in radians.\n */\n\n\n setFromAxisAngle(vector, angle) {\n const s = Math.sin(angle * 0.5);\n this.x = vector.x * s;\n this.y = vector.y * s;\n this.z = vector.z * s;\n this.w = Math.cos(angle * 0.5);\n return this;\n }\n /**\n * Converts the quaternion to [ axis, angle ] representation.\n * @param targetAxis A vector object to reuse for storing the axis.\n * @return An array, first element is the axis and the second is the angle in radians.\n */\n\n\n toAxisAngle(targetAxis = new Vec3()) {\n this.normalize(); // if w>1 acos and sqrt will produce errors, this cant happen if quaternion is normalised\n\n const angle = 2 * Math.acos(this.w);\n const s = Math.sqrt(1 - this.w * this.w); // assuming quaternion normalised then w is less than 1, so term always positive.\n\n if (s < 0.001) {\n // test to avoid divide by zero, s is always positive due to sqrt\n // if s close to zero then direction of axis not important\n targetAxis.x = this.x; // if it is important that axis is normalised then replace with x=1; y=z=0;\n\n targetAxis.y = this.y;\n targetAxis.z = this.z;\n } else {\n targetAxis.x = this.x / s; // normalise axis\n\n targetAxis.y = this.y / s;\n targetAxis.z = this.z / s;\n }\n\n return [targetAxis, angle];\n }\n /**\n * Set the quaternion value given two vectors. The resulting rotation will be the needed rotation to rotate u to v.\n */\n\n\n setFromVectors(u, v) {\n if (u.isAntiparallelTo(v)) {\n const t1 = sfv_t1;\n const t2 = sfv_t2;\n u.tangents(t1, t2);\n this.setFromAxisAngle(t1, Math.PI);\n } else {\n const a = u.cross(v);\n this.x = a.x;\n this.y = a.y;\n this.z = a.z;\n this.w = Math.sqrt(u.length() ** 2 * v.length() ** 2) + u.dot(v);\n this.normalize();\n }\n\n return this;\n }\n /**\n * Multiply the quaternion with an other quaternion.\n */\n\n\n mult(quat, target = new Quaternion()) {\n const ax = this.x;\n const ay = this.y;\n const az = this.z;\n const aw = this.w;\n const bx = quat.x;\n const by = quat.y;\n const bz = quat.z;\n const bw = quat.w;\n target.x = ax * bw + aw * bx + ay * bz - az * by;\n target.y = ay * bw + aw * by + az * bx - ax * bz;\n target.z = az * bw + aw * bz + ax * by - ay * bx;\n target.w = aw * bw - ax * bx - ay * by - az * bz;\n return target;\n }\n /**\n * Get the inverse quaternion rotation.\n */\n\n\n inverse(target = new Quaternion()) {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n const w = this.w;\n this.conjugate(target);\n const inorm2 = 1 / (x * x + y * y + z * z + w * w);\n target.x *= inorm2;\n target.y *= inorm2;\n target.z *= inorm2;\n target.w *= inorm2;\n return target;\n }\n /**\n * Get the quaternion conjugate\n */\n\n\n conjugate(target = new Quaternion()) {\n target.x = -this.x;\n target.y = -this.y;\n target.z = -this.z;\n target.w = this.w;\n return target;\n }\n /**\n * Normalize the quaternion. Note that this changes the values of the quaternion.\n */\n\n\n normalize() {\n let l = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\n if (l === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 0;\n } else {\n l = 1 / l;\n this.x *= l;\n this.y *= l;\n this.z *= l;\n this.w *= l;\n }\n\n return this;\n }\n /**\n * Approximation of quaternion normalization. Works best when quat is already almost-normalized.\n * @author unphased, https://github.com/unphased\n */\n\n\n normalizeFast() {\n const f = (3.0 - (this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w)) / 2.0;\n\n if (f === 0) {\n this.x = 0;\n this.y = 0;\n this.z = 0;\n this.w = 0;\n } else {\n this.x *= f;\n this.y *= f;\n this.z *= f;\n this.w *= f;\n }\n\n return this;\n }\n /**\n * Multiply the quaternion by a vector\n */\n\n\n vmult(v, target = new Vec3()) {\n const x = v.x;\n const y = v.y;\n const z = v.z;\n const qx = this.x;\n const qy = this.y;\n const qz = this.z;\n const qw = this.w; // q*v\n\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n target.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n target.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n target.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n return target;\n }\n /**\n * Copies value of source to this quaternion.\n * @return this\n */\n\n\n copy(quat) {\n this.x = quat.x;\n this.y = quat.y;\n this.z = quat.z;\n this.w = quat.w;\n return this;\n }\n /**\n * Convert the quaternion to euler angle representation. Order: YZX, as this page describes: https://www.euclideanspace.com/maths/standards/index.htm\n * @param order Three-character string, defaults to \"YZX\"\n */\n\n\n toEuler(target, order = 'YZX') {\n let heading;\n let attitude;\n let bank;\n const x = this.x;\n const y = this.y;\n const z = this.z;\n const w = this.w;\n\n switch (order) {\n case 'YZX':\n const test = x * y + z * w;\n\n if (test > 0.499) {\n // singularity at north pole\n heading = 2 * Math.atan2(x, w);\n attitude = Math.PI / 2;\n bank = 0;\n }\n\n if (test < -0.499) {\n // singularity at south pole\n heading = -2 * Math.atan2(x, w);\n attitude = -Math.PI / 2;\n bank = 0;\n }\n\n if (heading === undefined) {\n const sqx = x * x;\n const sqy = y * y;\n const sqz = z * z;\n heading = Math.atan2(2 * y * w - 2 * x * z, 1 - 2 * sqy - 2 * sqz); // Heading\n\n attitude = Math.asin(2 * test); // attitude\n\n bank = Math.atan2(2 * x * w - 2 * y * z, 1 - 2 * sqx - 2 * sqz); // bank\n }\n\n break;\n\n default:\n throw new Error(\"Euler order \" + order + \" not supported yet.\");\n }\n\n target.y = heading;\n target.z = attitude;\n target.x = bank;\n }\n /**\n * @param order The order to apply angles: 'XYZ' or 'YXZ' or any other combination.\n *\n * See {@link https://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors MathWorks} reference\n */\n\n\n setFromEuler(x, y, z, order = 'XYZ') {\n const c1 = Math.cos(x / 2);\n const c2 = Math.cos(y / 2);\n const c3 = Math.cos(z / 2);\n const s1 = Math.sin(x / 2);\n const s2 = Math.sin(y / 2);\n const s3 = Math.sin(z / 2);\n\n if (order === 'XYZ') {\n this.x = s1 * c2 * c3 + c1 * s2 * s3;\n this.y = c1 * s2 * c3 - s1 * c2 * s3;\n this.z = c1 * c2 * s3 + s1 * s2 * c3;\n this.w = c1 * c2 * c3 - s1 * s2 * s3;\n } else if (order === 'YXZ') {\n this.x = s1 * c2 * c3 + c1 * s2 * s3;\n this.y = c1 * s2 * c3 - s1 * c2 * s3;\n this.z = c1 * c2 * s3 - s1 * s2 * c3;\n this.w = c1 * c2 * c3 + s1 * s2 * s3;\n } else if (order === 'ZXY') {\n this.x = s1 * c2 * c3 - c1 * s2 * s3;\n this.y = c1 * s2 * c3 + s1 * c2 * s3;\n this.z = c1 * c2 * s3 + s1 * s2 * c3;\n this.w = c1 * c2 * c3 - s1 * s2 * s3;\n } else if (order === 'ZYX') {\n this.x = s1 * c2 * c3 - c1 * s2 * s3;\n this.y = c1 * s2 * c3 + s1 * c2 * s3;\n this.z = c1 * c2 * s3 - s1 * s2 * c3;\n this.w = c1 * c2 * c3 + s1 * s2 * s3;\n } else if (order === 'YZX') {\n this.x = s1 * c2 * c3 + c1 * s2 * s3;\n this.y = c1 * s2 * c3 + s1 * c2 * s3;\n this.z = c1 * c2 * s3 - s1 * s2 * c3;\n this.w = c1 * c2 * c3 - s1 * s2 * s3;\n } else if (order === 'XZY') {\n this.x = s1 * c2 * c3 - c1 * s2 * s3;\n this.y = c1 * s2 * c3 - s1 * c2 * s3;\n this.z = c1 * c2 * s3 + s1 * s2 * c3;\n this.w = c1 * c2 * c3 + s1 * s2 * s3;\n }\n\n return this;\n }\n\n clone() {\n return new Quaternion(this.x, this.y, this.z, this.w);\n }\n /**\n * Performs a spherical linear interpolation between two quat\n *\n * @param toQuat second operand\n * @param t interpolation amount between the self quaternion and toQuat\n * @param target A quaternion to store the result in. If not provided, a new one will be created.\n * @returns {Quaternion} The \"target\" object\n */\n\n\n slerp(toQuat, t, target = new Quaternion()) {\n const ax = this.x;\n const ay = this.y;\n const az = this.z;\n const aw = this.w;\n let bx = toQuat.x;\n let by = toQuat.y;\n let bz = toQuat.z;\n let bw = toQuat.w;\n let omega;\n let cosom;\n let sinom;\n let scale0;\n let scale1; // calc cosine\n\n cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n } // calculate coefficients\n\n\n if (1.0 - cosom > 0.000001) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n } // calculate final values\n\n\n target.x = scale0 * ax + scale1 * bx;\n target.y = scale0 * ay + scale1 * by;\n target.z = scale0 * az + scale1 * bz;\n target.w = scale0 * aw + scale1 * bw;\n return target;\n }\n /**\n * Rotate an absolute orientation quaternion given an angular velocity and a time step.\n */\n\n\n integrate(angularVelocity, dt, angularFactor, target = new Quaternion()) {\n const ax = angularVelocity.x * angularFactor.x,\n ay = angularVelocity.y * angularFactor.y,\n az = angularVelocity.z * angularFactor.z,\n bx = this.x,\n by = this.y,\n bz = this.z,\n bw = this.w;\n const half_dt = dt * 0.5;\n target.x += half_dt * (ax * bw + ay * bz - az * by);\n target.y += half_dt * (ay * bw + az * bx - ax * bz);\n target.z += half_dt * (az * bw + ax * by - ay * bx);\n target.w += half_dt * (-ax * bx - ay * by - az * bz);\n return target;\n }\n\n}\nconst sfv_t1 = new Vec3();\nconst sfv_t2 = new Vec3();\n\n/**\n * The available shape types.\n */\nconst SHAPE_TYPES = {\n /** SPHERE */\n SPHERE: 1,\n\n /** PLANE */\n PLANE: 2,\n\n /** BOX */\n BOX: 4,\n\n /** COMPOUND */\n COMPOUND: 8,\n\n /** CONVEXPOLYHEDRON */\n CONVEXPOLYHEDRON: 16,\n\n /** HEIGHTFIELD */\n HEIGHTFIELD: 32,\n\n /** PARTICLE */\n PARTICLE: 64,\n\n /** CYLINDER */\n CYLINDER: 128,\n\n /** TRIMESH */\n TRIMESH: 256\n};\n/**\n * ShapeType\n */\n\n/**\n * Base class for shapes\n */\nclass Shape {\n /**\n * Identifier of the Shape.\n */\n\n /**\n * The type of this shape. Must be set to an int > 0 by subclasses.\n */\n\n /**\n * The local bounding sphere radius of this shape.\n */\n\n /**\n * Whether to produce contact forces when in contact with other bodies. Note that contacts will be generated, but they will be disabled.\n * @default true\n */\n\n /**\n * @default 1\n */\n\n /**\n * @default -1\n */\n\n /**\n * Optional material of the shape that regulates contact properties.\n */\n\n /**\n * The body to which the shape is added to.\n */\n\n /**\n * All the Shape types.\n */\n constructor(options = {}) {\n this.id = void 0;\n this.type = void 0;\n this.boundingSphereRadius = void 0;\n this.collisionResponse = void 0;\n this.collisionFilterGroup = void 0;\n this.collisionFilterMask = void 0;\n this.material = void 0;\n this.body = void 0;\n this.id = Shape.idCounter++;\n this.type = options.type || 0;\n this.boundingSphereRadius = 0;\n this.collisionResponse = options.collisionResponse ? options.collisionResponse : true;\n this.collisionFilterGroup = options.collisionFilterGroup !== undefined ? options.collisionFilterGroup : 1;\n this.collisionFilterMask = options.collisionFilterMask !== undefined ? options.collisionFilterMask : -1;\n this.material = options.material ? options.material : null;\n this.body = null;\n }\n /**\n * Computes the bounding sphere radius.\n * The result is stored in the property `.boundingSphereRadius`\n */\n\n\n updateBoundingSphereRadius() {\n throw \"computeBoundingSphereRadius() not implemented for shape type \" + this.type;\n }\n /**\n * Get the volume of this shape\n */\n\n\n volume() {\n throw \"volume() not implemented for shape type \" + this.type;\n }\n /**\n * Calculates the inertia in the local frame for this shape.\n * @see http://en.wikipedia.org/wiki/List_of_moments_of_inertia\n */\n\n\n calculateLocalInertia(mass, target) {\n throw \"calculateLocalInertia() not implemented for shape type \" + this.type;\n }\n /**\n * @todo use abstract for these kind of methods\n */\n\n\n calculateWorldAABB(pos, quat, min, max) {\n throw \"calculateWorldAABB() not implemented for shape type \" + this.type;\n }\n\n}\nShape.idCounter = 0;\nShape.types = SHAPE_TYPES;\n\n/**\n * Transformation utilities.\n */\nclass Transform {\n /**\n * position\n */\n\n /**\n * quaternion\n */\n constructor(options = {}) {\n this.position = void 0;\n this.quaternion = void 0;\n this.position = new Vec3();\n this.quaternion = new Quaternion();\n\n if (options.position) {\n this.position.copy(options.position);\n }\n\n if (options.quaternion) {\n this.quaternion.copy(options.quaternion);\n }\n }\n /**\n * Get a global point in local transform coordinates.\n */\n\n\n pointToLocal(worldPoint, result) {\n return Transform.pointToLocalFrame(this.position, this.quaternion, worldPoint, result);\n }\n /**\n * Get a local point in global transform coordinates.\n */\n\n\n pointToWorld(localPoint, result) {\n return Transform.pointToWorldFrame(this.position, this.quaternion, localPoint, result);\n }\n /**\n * vectorToWorldFrame\n */\n\n\n vectorToWorldFrame(localVector, result = new Vec3()) {\n this.quaternion.vmult(localVector, result);\n return result;\n }\n /**\n * pointToLocalFrame\n */\n\n\n static pointToLocalFrame(position, quaternion, worldPoint, result = new Vec3()) {\n worldPoint.vsub(position, result);\n quaternion.conjugate(tmpQuat$1);\n tmpQuat$1.vmult(result, result);\n return result;\n }\n /**\n * pointToWorldFrame\n */\n\n\n static pointToWorldFrame(position, quaternion, localPoint, result = new Vec3()) {\n quaternion.vmult(localPoint, result);\n result.vadd(position, result);\n return result;\n }\n /**\n * vectorToWorldFrame\n */\n\n\n static vectorToWorldFrame(quaternion, localVector, result = new Vec3()) {\n quaternion.vmult(localVector, result);\n return result;\n }\n /**\n * vectorToLocalFrame\n */\n\n\n static vectorToLocalFrame(position, quaternion, worldVector, result = new Vec3()) {\n quaternion.w *= -1;\n quaternion.vmult(worldVector, result);\n quaternion.w *= -1;\n return result;\n }\n\n}\nconst tmpQuat$1 = new Quaternion();\n\n/**\n * A set of polygons describing a convex shape.\n *\n * The shape MUST be convex for the code to work properly. No polygons may be coplanar (contained\n * in the same 3D plane), instead these should be merged into one polygon.\n *\n * @author qiao / https://github.com/qiao (original author, see https://github.com/qiao/three.js/commit/85026f0c769e4000148a67d45a9e9b9c5108836f)\n * @author schteppe / https://github.com/schteppe\n * @see https://www.altdevblogaday.com/2011/05/13/contact-generation-between-3d-convex-meshes/\n *\n * @todo Move the clipping functions to ContactGenerator?\n * @todo Automatically merge coplanar polygons in constructor.\n * @example\n * const convexShape = new CANNON.ConvexPolyhedron({ vertices, faces })\n * const convexBody = new CANNON.Body({ mass: 1, shape: convexShape })\n * world.addBody(convexBody)\n */\nclass ConvexPolyhedron extends Shape {\n /** vertices */\n\n /**\n * Array of integer arrays, indicating which vertices each face consists of\n */\n\n /** faceNormals */\n\n /** worldVertices */\n\n /** worldVerticesNeedsUpdate */\n\n /** worldFaceNormals */\n\n /** worldFaceNormalsNeedsUpdate */\n\n /**\n * If given, these locally defined, normalized axes are the only ones being checked when doing separating axis check.\n */\n\n /** uniqueEdges */\n\n /**\n * @param vertices An array of Vec3's\n * @param faces Array of integer arrays, describing which vertices that is included in each face.\n */\n constructor(props = {}) {\n const {\n vertices = [],\n faces = [],\n normals = [],\n axes,\n boundingSphereRadius\n } = props;\n super({\n type: Shape.types.CONVEXPOLYHEDRON\n });\n this.vertices = void 0;\n this.faces = void 0;\n this.faceNormals = void 0;\n this.worldVertices = void 0;\n this.worldVerticesNeedsUpdate = void 0;\n this.worldFaceNormals = void 0;\n this.worldFaceNormalsNeedsUpdate = void 0;\n this.uniqueAxes = void 0;\n this.uniqueEdges = void 0;\n this.vertices = vertices;\n this.faces = faces;\n this.faceNormals = normals;\n\n if (this.faceNormals.length === 0) {\n this.computeNormals();\n }\n\n if (!boundingSphereRadius) {\n this.updateBoundingSphereRadius();\n } else {\n this.boundingSphereRadius = boundingSphereRadius;\n }\n\n this.worldVertices = []; // World transformed version of .vertices\n\n this.worldVerticesNeedsUpdate = true;\n this.worldFaceNormals = []; // World transformed version of .faceNormals\n\n this.worldFaceNormalsNeedsUpdate = true;\n this.uniqueAxes = axes ? axes.slice() : null;\n this.uniqueEdges = [];\n this.computeEdges();\n }\n /**\n * Computes uniqueEdges\n */\n\n\n computeEdges() {\n const faces = this.faces;\n const vertices = this.vertices;\n const edges = this.uniqueEdges;\n edges.length = 0;\n const edge = new Vec3();\n\n for (let i = 0; i !== faces.length; i++) {\n const face = faces[i];\n const numVertices = face.length;\n\n for (let j = 0; j !== numVertices; j++) {\n const k = (j + 1) % numVertices;\n vertices[face[j]].vsub(vertices[face[k]], edge);\n edge.normalize();\n let found = false;\n\n for (let p = 0; p !== edges.length; p++) {\n if (edges[p].almostEquals(edge) || edges[p].almostEquals(edge)) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n edges.push(edge.clone());\n }\n }\n }\n }\n /**\n * Compute the normals of the faces.\n * Will reuse existing Vec3 objects in the `faceNormals` array if they exist.\n */\n\n\n computeNormals() {\n this.faceNormals.length = this.faces.length; // Generate normals\n\n for (let i = 0; i < this.faces.length; i++) {\n // Check so all vertices exists for this face\n for (let j = 0; j < this.faces[i].length; j++) {\n if (!this.vertices[this.faces[i][j]]) {\n throw new Error(\"Vertex \" + this.faces[i][j] + \" not found!\");\n }\n }\n\n const n = this.faceNormals[i] || new Vec3();\n this.getFaceNormal(i, n);\n n.negate(n);\n this.faceNormals[i] = n;\n const vertex = this.vertices[this.faces[i][0]];\n\n if (n.dot(vertex) < 0) {\n console.error(\".faceNormals[\" + i + \"] = Vec3(\" + n.toString() + \") looks like it points into the shape? The vertices follow. Make sure they are ordered CCW around the normal, using the right hand rule.\");\n\n for (let j = 0; j < this.faces[i].length; j++) {\n console.warn(\".vertices[\" + this.faces[i][j] + \"] = Vec3(\" + this.vertices[this.faces[i][j]].toString() + \")\");\n }\n }\n }\n }\n /**\n * Compute the normal of a face from its vertices\n */\n\n\n getFaceNormal(i, target) {\n const f = this.faces[i];\n const va = this.vertices[f[0]];\n const vb = this.vertices[f[1]];\n const vc = this.vertices[f[2]];\n ConvexPolyhedron.computeNormal(va, vb, vc, target);\n }\n /**\n * Get face normal given 3 vertices\n */\n\n\n static computeNormal(va, vb, vc, target) {\n const cb = new Vec3();\n const ab = new Vec3();\n vb.vsub(va, ab);\n vc.vsub(vb, cb);\n cb.cross(ab, target);\n\n if (!target.isZero()) {\n target.normalize();\n }\n }\n /**\n * @param minDist Clamp distance\n * @param result The an array of contact point objects, see clipFaceAgainstHull\n */\n\n\n clipAgainstHull(posA, quatA, hullB, posB, quatB, separatingNormal, minDist, maxDist, result) {\n const WorldNormal = new Vec3();\n let closestFaceB = -1;\n let dmax = -Number.MAX_VALUE;\n\n for (let face = 0; face < hullB.faces.length; face++) {\n WorldNormal.copy(hullB.faceNormals[face]);\n quatB.vmult(WorldNormal, WorldNormal);\n const d = WorldNormal.dot(separatingNormal);\n\n if (d > dmax) {\n dmax = d;\n closestFaceB = face;\n }\n }\n\n const worldVertsB1 = [];\n\n for (let i = 0; i < hullB.faces[closestFaceB].length; i++) {\n const b = hullB.vertices[hullB.faces[closestFaceB][i]];\n const worldb = new Vec3();\n worldb.copy(b);\n quatB.vmult(worldb, worldb);\n posB.vadd(worldb, worldb);\n worldVertsB1.push(worldb);\n }\n\n if (closestFaceB >= 0) {\n this.clipFaceAgainstHull(separatingNormal, posA, quatA, worldVertsB1, minDist, maxDist, result);\n }\n }\n /**\n * Find the separating axis between this hull and another\n * @param target The target vector to save the axis in\n * @return Returns false if a separation is found, else true\n */\n\n\n findSeparatingAxis(hullB, posA, quatA, posB, quatB, target, faceListA, faceListB) {\n const faceANormalWS3 = new Vec3();\n const Worldnormal1 = new Vec3();\n const deltaC = new Vec3();\n const worldEdge0 = new Vec3();\n const worldEdge1 = new Vec3();\n const Cross = new Vec3();\n let dmin = Number.MAX_VALUE;\n const hullA = this;\n\n if (!hullA.uniqueAxes) {\n const numFacesA = faceListA ? faceListA.length : hullA.faces.length; // Test face normals from hullA\n\n for (let i = 0; i < numFacesA; i++) {\n const fi = faceListA ? faceListA[i] : i; // Get world face normal\n\n faceANormalWS3.copy(hullA.faceNormals[fi]);\n quatA.vmult(faceANormalWS3, faceANormalWS3);\n const d = hullA.testSepAxis(faceANormalWS3, hullB, posA, quatA, posB, quatB);\n\n if (d === false) {\n return false;\n }\n\n if (d < dmin) {\n dmin = d;\n target.copy(faceANormalWS3);\n }\n }\n } else {\n // Test unique axes\n for (let i = 0; i !== hullA.uniqueAxes.length; i++) {\n // Get world axis\n quatA.vmult(hullA.uniqueAxes[i], faceANormalWS3);\n const d = hullA.testSepAxis(faceANormalWS3, hullB, posA, quatA, posB, quatB);\n\n if (d === false) {\n return false;\n }\n\n if (d < dmin) {\n dmin = d;\n target.copy(faceANormalWS3);\n }\n }\n }\n\n if (!hullB.uniqueAxes) {\n // Test face normals from hullB\n const numFacesB = faceListB ? faceListB.length : hullB.faces.length;\n\n for (let i = 0; i < numFacesB; i++) {\n const fi = faceListB ? faceListB[i] : i;\n Worldnormal1.copy(hullB.faceNormals[fi]);\n quatB.vmult(Worldnormal1, Worldnormal1);\n const d = hullA.testSepAxis(Worldnormal1, hullB, posA, quatA, posB, quatB);\n\n if (d === false) {\n return false;\n }\n\n if (d < dmin) {\n dmin = d;\n target.copy(Worldnormal1);\n }\n }\n } else {\n // Test unique axes in B\n for (let i = 0; i !== hullB.uniqueAxes.length; i++) {\n quatB.vmult(hullB.uniqueAxes[i], Worldnormal1);\n const d = hullA.testSepAxis(Worldnormal1, hullB, posA, quatA, posB, quatB);\n\n if (d === false) {\n return false;\n }\n\n if (d < dmin) {\n dmin = d;\n target.copy(Worldnormal1);\n }\n }\n } // Test edges\n\n\n for (let e0 = 0; e0 !== hullA.uniqueEdges.length; e0++) {\n // Get world edge\n quatA.vmult(hullA.uniqueEdges[e0], worldEdge0);\n\n for (let e1 = 0; e1 !== hullB.uniqueEdges.length; e1++) {\n // Get world edge 2\n quatB.vmult(hullB.uniqueEdges[e1], worldEdge1);\n worldEdge0.cross(worldEdge1, Cross);\n\n if (!Cross.almostZero()) {\n Cross.normalize();\n const dist = hullA.testSepAxis(Cross, hullB, posA, quatA, posB, quatB);\n\n if (dist === false) {\n return false;\n }\n\n if (dist < dmin) {\n dmin = dist;\n target.copy(Cross);\n }\n }\n }\n }\n\n posB.vsub(posA, deltaC);\n\n if (deltaC.dot(target) > 0.0) {\n target.negate(target);\n }\n\n return true;\n }\n /**\n * Test separating axis against two hulls. Both hulls are projected onto the axis and the overlap size is returned if there is one.\n * @return The overlap depth, or FALSE if no penetration.\n */\n\n\n testSepAxis(axis, hullB, posA, quatA, posB, quatB) {\n const hullA = this;\n ConvexPolyhedron.project(hullA, axis, posA, quatA, maxminA);\n ConvexPolyhedron.project(hullB, axis, posB, quatB, maxminB);\n const maxA = maxminA[0];\n const minA = maxminA[1];\n const maxB = maxminB[0];\n const minB = maxminB[1];\n\n if (maxA < minB || maxB < minA) {\n return false; // Separated\n }\n\n const d0 = maxA - minB;\n const d1 = maxB - minA;\n const depth = d0 < d1 ? d0 : d1;\n return depth;\n }\n /**\n * calculateLocalInertia\n */\n\n\n calculateLocalInertia(mass, target) {\n // Approximate with box inertia\n // Exact inertia calculation is overkill, but see http://geometrictools.com/Documentation/PolyhedralMassProperties.pdf for the correct way to do it\n const aabbmax = new Vec3();\n const aabbmin = new Vec3();\n this.computeLocalAABB(aabbmin, aabbmax);\n const x = aabbmax.x - aabbmin.x;\n const y = aabbmax.y - aabbmin.y;\n const z = aabbmax.z - aabbmin.z;\n target.x = 1.0 / 12.0 * mass * (2 * y * 2 * y + 2 * z * 2 * z);\n target.y = 1.0 / 12.0 * mass * (2 * x * 2 * x + 2 * z * 2 * z);\n target.z = 1.0 / 12.0 * mass * (2 * y * 2 * y + 2 * x * 2 * x);\n }\n /**\n * @param face_i Index of the face\n */\n\n\n getPlaneConstantOfFace(face_i) {\n const f = this.faces[face_i];\n const n = this.faceNormals[face_i];\n const v = this.vertices[f[0]];\n const c = -n.dot(v);\n return c;\n }\n /**\n * Clip a face against a hull.\n * @param worldVertsB1 An array of Vec3 with vertices in the world frame.\n * @param minDist Distance clamping\n * @param Array result Array to store resulting contact points in. Will be objects with properties: point, depth, normal. These are represented in world coordinates.\n */\n\n\n clipFaceAgainstHull(separatingNormal, posA, quatA, worldVertsB1, minDist, maxDist, result) {\n const faceANormalWS = new Vec3();\n const edge0 = new Vec3();\n const WorldEdge0 = new Vec3();\n const worldPlaneAnormal1 = new Vec3();\n const planeNormalWS1 = new Vec3();\n const worldA1 = new Vec3();\n const localPlaneNormal = new Vec3();\n const planeNormalWS = new Vec3();\n const hullA = this;\n const worldVertsB2 = [];\n const pVtxIn = worldVertsB1;\n const pVtxOut = worldVertsB2;\n let closestFaceA = -1;\n let dmin = Number.MAX_VALUE; // Find the face with normal closest to the separating axis\n\n for (let face = 0; face < hullA.faces.length; face++) {\n faceANormalWS.copy(hullA.faceNormals[face]);\n quatA.vmult(faceANormalWS, faceANormalWS);\n const d = faceANormalWS.dot(separatingNormal);\n\n if (d < dmin) {\n dmin = d;\n closestFaceA = face;\n }\n }\n\n if (closestFaceA < 0) {\n return;\n } // Get the face and construct connected faces\n\n\n const polyA = hullA.faces[closestFaceA];\n polyA.connectedFaces = [];\n\n for (let i = 0; i < hullA.faces.length; i++) {\n for (let j = 0; j < hullA.faces[i].length; j++) {\n if (\n /* Sharing a vertex*/\n polyA.indexOf(hullA.faces[i][j]) !== -1 &&\n /* Not the one we are looking for connections from */\n i !== closestFaceA &&\n /* Not already added */\n polyA.connectedFaces.indexOf(i) === -1) {\n polyA.connectedFaces.push(i);\n }\n }\n } // Clip the polygon to the back of the planes of all faces of hull A,\n // that are adjacent to the witness face\n\n\n const numVerticesA = polyA.length;\n\n for (let i = 0; i < numVerticesA; i++) {\n const a = hullA.vertices[polyA[i]];\n const b = hullA.vertices[polyA[(i + 1) % numVerticesA]];\n a.vsub(b, edge0);\n WorldEdge0.copy(edge0);\n quatA.vmult(WorldEdge0, WorldEdge0);\n posA.vadd(WorldEdge0, WorldEdge0);\n worldPlaneAnormal1.copy(this.faceNormals[closestFaceA]);\n quatA.vmult(worldPlaneAnormal1, worldPlaneAnormal1);\n posA.vadd(worldPlaneAnormal1, worldPlaneAnormal1);\n WorldEdge0.cross(worldPlaneAnormal1, planeNormalWS1);\n planeNormalWS1.negate(planeNormalWS1);\n worldA1.copy(a);\n quatA.vmult(worldA1, worldA1);\n posA.vadd(worldA1, worldA1);\n const otherFace = polyA.connectedFaces[i];\n localPlaneNormal.copy(this.faceNormals[otherFace]);\n const localPlaneEq = this.getPlaneConstantOfFace(otherFace);\n planeNormalWS.copy(localPlaneNormal);\n quatA.vmult(planeNormalWS, planeNormalWS);\n const planeEqWS = localPlaneEq - planeNormalWS.dot(posA); // Clip face against our constructed plane\n\n this.clipFaceAgainstPlane(pVtxIn, pVtxOut, planeNormalWS, planeEqWS); // Throw away all clipped points, but save the remaining until next clip\n\n while (pVtxIn.length) {\n pVtxIn.shift();\n }\n\n while (pVtxOut.length) {\n pVtxIn.push(pVtxOut.shift());\n }\n } // only keep contact points that are behind the witness face\n\n\n localPlaneNormal.copy(this.faceNormals[closestFaceA]);\n const localPlaneEq = this.getPlaneConstantOfFace(closestFaceA);\n planeNormalWS.copy(localPlaneNormal);\n quatA.vmult(planeNormalWS, planeNormalWS);\n const planeEqWS = localPlaneEq - planeNormalWS.dot(posA);\n\n for (let i = 0; i < pVtxIn.length; i++) {\n let depth = planeNormalWS.dot(pVtxIn[i]) + planeEqWS; // ???\n\n if (depth <= minDist) {\n console.log(\"clamped: depth=\" + depth + \" to minDist=\" + minDist);\n depth = minDist;\n }\n\n if (depth <= maxDist) {\n const point = pVtxIn[i];\n\n if (depth <= 1e-6) {\n const p = {\n point,\n normal: planeNormalWS,\n depth\n };\n result.push(p);\n }\n }\n }\n }\n /**\n * Clip a face in a hull against the back of a plane.\n * @param planeConstant The constant in the mathematical plane equation\n */\n\n\n clipFaceAgainstPlane(inVertices, outVertices, planeNormal, planeConstant) {\n let n_dot_first;\n let n_dot_last;\n const numVerts = inVertices.length;\n\n if (numVerts < 2) {\n return outVertices;\n }\n\n let firstVertex = inVertices[inVertices.length - 1];\n let lastVertex = inVertices[0];\n n_dot_first = planeNormal.dot(firstVertex) + planeConstant;\n\n for (let vi = 0; vi < numVerts; vi++) {\n lastVertex = inVertices[vi];\n n_dot_last = planeNormal.dot(lastVertex) + planeConstant;\n\n if (n_dot_first < 0) {\n if (n_dot_last < 0) {\n // Start < 0, end < 0, so output lastVertex\n const newv = new Vec3();\n newv.copy(lastVertex);\n outVertices.push(newv);\n } else {\n // Start < 0, end >= 0, so output intersection\n const newv = new Vec3();\n firstVertex.lerp(lastVertex, n_dot_first / (n_dot_first - n_dot_last), newv);\n outVertices.push(newv);\n }\n } else {\n if (n_dot_last < 0) {\n // Start >= 0, end < 0 so output intersection and end\n const newv = new Vec3();\n firstVertex.lerp(lastVertex, n_dot_first / (n_dot_first - n_dot_last), newv);\n outVertices.push(newv);\n outVertices.push(lastVertex);\n }\n }\n\n firstVertex = lastVertex;\n n_dot_first = n_dot_last;\n }\n\n return outVertices;\n }\n /**\n * Updates `.worldVertices` and sets `.worldVerticesNeedsUpdate` to false.\n */\n\n\n computeWorldVertices(position, quat) {\n while (this.worldVertices.length < this.vertices.length) {\n this.worldVertices.push(new Vec3());\n }\n\n const verts = this.vertices;\n const worldVerts = this.worldVertices;\n\n for (let i = 0; i !== this.vertices.length; i++) {\n quat.vmult(verts[i], worldVerts[i]);\n position.vadd(worldVerts[i], worldVerts[i]);\n }\n\n this.worldVerticesNeedsUpdate = false;\n }\n\n computeLocalAABB(aabbmin, aabbmax) {\n const vertices = this.vertices;\n aabbmin.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n aabbmax.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n\n for (let i = 0; i < this.vertices.length; i++) {\n const v = vertices[i];\n\n if (v.x < aabbmin.x) {\n aabbmin.x = v.x;\n } else if (v.x > aabbmax.x) {\n aabbmax.x = v.x;\n }\n\n if (v.y < aabbmin.y) {\n aabbmin.y = v.y;\n } else if (v.y > aabbmax.y) {\n aabbmax.y = v.y;\n }\n\n if (v.z < aabbmin.z) {\n aabbmin.z = v.z;\n } else if (v.z > aabbmax.z) {\n aabbmax.z = v.z;\n }\n }\n }\n /**\n * Updates `worldVertices` and sets `worldVerticesNeedsUpdate` to false.\n */\n\n\n computeWorldFaceNormals(quat) {\n const N = this.faceNormals.length;\n\n while (this.worldFaceNormals.length < N) {\n this.worldFaceNormals.push(new Vec3());\n }\n\n const normals = this.faceNormals;\n const worldNormals = this.worldFaceNormals;\n\n for (let i = 0; i !== N; i++) {\n quat.vmult(normals[i], worldNormals[i]);\n }\n\n this.worldFaceNormalsNeedsUpdate = false;\n }\n /**\n * updateBoundingSphereRadius\n */\n\n\n updateBoundingSphereRadius() {\n // Assume points are distributed with local (0,0,0) as center\n let max2 = 0;\n const verts = this.vertices;\n\n for (let i = 0; i !== verts.length; i++) {\n const norm2 = verts[i].lengthSquared();\n\n if (norm2 > max2) {\n max2 = norm2;\n }\n }\n\n this.boundingSphereRadius = Math.sqrt(max2);\n }\n /**\n * calculateWorldAABB\n */\n\n\n calculateWorldAABB(pos, quat, min, max) {\n const verts = this.vertices;\n let minx;\n let miny;\n let minz;\n let maxx;\n let maxy;\n let maxz;\n let tempWorldVertex = new Vec3();\n\n for (let i = 0; i < verts.length; i++) {\n tempWorldVertex.copy(verts[i]);\n quat.vmult(tempWorldVertex, tempWorldVertex);\n pos.vadd(tempWorldVertex, tempWorldVertex);\n const v = tempWorldVertex;\n\n if (minx === undefined || v.x < minx) {\n minx = v.x;\n }\n\n if (maxx === undefined || v.x > maxx) {\n maxx = v.x;\n }\n\n if (miny === undefined || v.y < miny) {\n miny = v.y;\n }\n\n if (maxy === undefined || v.y > maxy) {\n maxy = v.y;\n }\n\n if (minz === undefined || v.z < minz) {\n minz = v.z;\n }\n\n if (maxz === undefined || v.z > maxz) {\n maxz = v.z;\n }\n }\n\n min.set(minx, miny, minz);\n max.set(maxx, maxy, maxz);\n }\n /**\n * Get approximate convex volume\n */\n\n\n volume() {\n return 4.0 * Math.PI * this.boundingSphereRadius / 3.0;\n }\n /**\n * Get an average of all the vertices positions\n */\n\n\n getAveragePointLocal(target = new Vec3()) {\n const verts = this.vertices;\n\n for (let i = 0; i < verts.length; i++) {\n target.vadd(verts[i], target);\n }\n\n target.scale(1 / verts.length, target);\n return target;\n }\n /**\n * Transform all local points. Will change the .vertices\n */\n\n\n transformAllPoints(offset, quat) {\n const n = this.vertices.length;\n const verts = this.vertices; // Apply rotation\n\n if (quat) {\n // Rotate vertices\n for (let i = 0; i < n; i++) {\n const v = verts[i];\n quat.vmult(v, v);\n } // Rotate face normals\n\n\n for (let i = 0; i < this.faceNormals.length; i++) {\n const v = this.faceNormals[i];\n quat.vmult(v, v);\n }\n /*\n // Rotate edges\n for(let i=0; i 0 || r1 > 0 && r2 < 0) {\n return false; // Encountered some other sign. Exit.\n }\n } // If we got here, all dot products were of the same sign.\n\n\n return -1;\n }\n /**\n * Get max and min dot product of a convex hull at position (pos,quat) projected onto an axis.\n * Results are saved in the array maxmin.\n * @param result result[0] and result[1] will be set to maximum and minimum, respectively.\n */\n\n\n static project(shape, axis, pos, quat, result) {\n const n = shape.vertices.length;\n const localAxis = project_localAxis;\n let max = 0;\n let min = 0;\n const localOrigin = project_localOrigin;\n const vs = shape.vertices;\n localOrigin.setZero(); // Transform the axis to local\n\n Transform.vectorToLocalFrame(pos, quat, axis, localAxis);\n Transform.pointToLocalFrame(pos, quat, localOrigin, localOrigin);\n const add = localOrigin.dot(localAxis);\n min = max = vs[0].dot(localAxis);\n\n for (let i = 1; i < n; i++) {\n const val = vs[i].dot(localAxis);\n\n if (val > max) {\n max = val;\n }\n\n if (val < min) {\n min = val;\n }\n }\n\n min -= add;\n max -= add;\n\n if (min > max) {\n // Inconsistent - swap\n const temp = min;\n min = max;\n max = temp;\n } // Output\n\n\n result[0] = max;\n result[1] = min;\n }\n\n}\nconst maxminA = [];\nconst maxminB = [];\nconst project_localAxis = new Vec3();\nconst project_localOrigin = new Vec3();\n\n/**\n * A 3d box shape.\n * @example\n * const size = 1\n * const halfExtents = new CANNON.Vec3(size, size, size)\n * const boxShape = new CANNON.Box(halfExtents)\n * const boxBody = new CANNON.Body({ mass: 1, shape: boxShape })\n * world.addBody(boxBody)\n */\nclass Box extends Shape {\n /**\n * The half extents of the box.\n */\n\n /**\n * Used by the contact generator to make contacts with other convex polyhedra for example.\n */\n constructor(halfExtents) {\n super({\n type: Shape.types.BOX\n });\n this.halfExtents = void 0;\n this.convexPolyhedronRepresentation = void 0;\n this.halfExtents = halfExtents;\n this.convexPolyhedronRepresentation = null;\n this.updateConvexPolyhedronRepresentation();\n this.updateBoundingSphereRadius();\n }\n /**\n * Updates the local convex polyhedron representation used for some collisions.\n */\n\n\n updateConvexPolyhedronRepresentation() {\n const sx = this.halfExtents.x;\n const sy = this.halfExtents.y;\n const sz = this.halfExtents.z;\n const V = Vec3;\n const vertices = [new V(-sx, -sy, -sz), new V(sx, -sy, -sz), new V(sx, sy, -sz), new V(-sx, sy, -sz), new V(-sx, -sy, sz), new V(sx, -sy, sz), new V(sx, sy, sz), new V(-sx, sy, sz)];\n const faces = [[3, 2, 1, 0], // -z\n [4, 5, 6, 7], // +z\n [5, 4, 0, 1], // -y\n [2, 3, 7, 6], // +y\n [0, 4, 7, 3], // -x\n [1, 2, 6, 5] // +x\n ];\n const axes = [new V(0, 0, 1), new V(0, 1, 0), new V(1, 0, 0)];\n const h = new ConvexPolyhedron({\n vertices,\n faces,\n axes\n });\n this.convexPolyhedronRepresentation = h;\n h.material = this.material;\n }\n /**\n * Calculate the inertia of the box.\n */\n\n\n calculateLocalInertia(mass, target = new Vec3()) {\n Box.calculateInertia(this.halfExtents, mass, target);\n return target;\n }\n\n static calculateInertia(halfExtents, mass, target) {\n const e = halfExtents;\n target.x = 1.0 / 12.0 * mass * (2 * e.y * 2 * e.y + 2 * e.z * 2 * e.z);\n target.y = 1.0 / 12.0 * mass * (2 * e.x * 2 * e.x + 2 * e.z * 2 * e.z);\n target.z = 1.0 / 12.0 * mass * (2 * e.y * 2 * e.y + 2 * e.x * 2 * e.x);\n }\n /**\n * Get the box 6 side normals\n * @param sixTargetVectors An array of 6 vectors, to store the resulting side normals in.\n * @param quat Orientation to apply to the normal vectors. If not provided, the vectors will be in respect to the local frame.\n */\n\n\n getSideNormals(sixTargetVectors, quat) {\n const sides = sixTargetVectors;\n const ex = this.halfExtents;\n sides[0].set(ex.x, 0, 0);\n sides[1].set(0, ex.y, 0);\n sides[2].set(0, 0, ex.z);\n sides[3].set(-ex.x, 0, 0);\n sides[4].set(0, -ex.y, 0);\n sides[5].set(0, 0, -ex.z);\n\n if (quat !== undefined) {\n for (let i = 0; i !== sides.length; i++) {\n quat.vmult(sides[i], sides[i]);\n }\n }\n\n return sides;\n }\n /**\n * Returns the volume of the box.\n */\n\n\n volume() {\n return 8.0 * this.halfExtents.x * this.halfExtents.y * this.halfExtents.z;\n }\n /**\n * updateBoundingSphereRadius\n */\n\n\n updateBoundingSphereRadius() {\n this.boundingSphereRadius = this.halfExtents.length();\n }\n /**\n * forEachWorldCorner\n */\n\n\n forEachWorldCorner(pos, quat, callback) {\n const e = this.halfExtents;\n const corners = [[e.x, e.y, e.z], [-e.x, e.y, e.z], [-e.x, -e.y, e.z], [-e.x, -e.y, -e.z], [e.x, -e.y, -e.z], [e.x, e.y, -e.z], [-e.x, e.y, -e.z], [e.x, -e.y, e.z]];\n\n for (let i = 0; i < corners.length; i++) {\n worldCornerTempPos.set(corners[i][0], corners[i][1], corners[i][2]);\n quat.vmult(worldCornerTempPos, worldCornerTempPos);\n pos.vadd(worldCornerTempPos, worldCornerTempPos);\n callback(worldCornerTempPos.x, worldCornerTempPos.y, worldCornerTempPos.z);\n }\n }\n /**\n * calculateWorldAABB\n */\n\n\n calculateWorldAABB(pos, quat, min, max) {\n const e = this.halfExtents;\n worldCornersTemp[0].set(e.x, e.y, e.z);\n worldCornersTemp[1].set(-e.x, e.y, e.z);\n worldCornersTemp[2].set(-e.x, -e.y, e.z);\n worldCornersTemp[3].set(-e.x, -e.y, -e.z);\n worldCornersTemp[4].set(e.x, -e.y, -e.z);\n worldCornersTemp[5].set(e.x, e.y, -e.z);\n worldCornersTemp[6].set(-e.x, e.y, -e.z);\n worldCornersTemp[7].set(e.x, -e.y, e.z);\n const wc = worldCornersTemp[0];\n quat.vmult(wc, wc);\n pos.vadd(wc, wc);\n max.copy(wc);\n min.copy(wc);\n\n for (let i = 1; i < 8; i++) {\n const wc = worldCornersTemp[i];\n quat.vmult(wc, wc);\n pos.vadd(wc, wc);\n const x = wc.x;\n const y = wc.y;\n const z = wc.z;\n\n if (x > max.x) {\n max.x = x;\n }\n\n if (y > max.y) {\n max.y = y;\n }\n\n if (z > max.z) {\n max.z = z;\n }\n\n if (x < min.x) {\n min.x = x;\n }\n\n if (y < min.y) {\n min.y = y;\n }\n\n if (z < min.z) {\n min.z = z;\n }\n } // Get each axis max\n // min.set(Infinity,Infinity,Infinity);\n // max.set(-Infinity,-Infinity,-Infinity);\n // this.forEachWorldCorner(pos,quat,function(x,y,z){\n // if(x > max.x){\n // max.x = x;\n // }\n // if(y > max.y){\n // max.y = y;\n // }\n // if(z > max.z){\n // max.z = z;\n // }\n // if(x < min.x){\n // min.x = x;\n // }\n // if(y < min.y){\n // min.y = y;\n // }\n // if(z < min.z){\n // min.z = z;\n // }\n // });\n\n }\n\n}\nconst worldCornerTempPos = new Vec3();\nconst worldCornersTemp = [new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3()];\n\n/**\n * BODY_TYPES\n */\nconst BODY_TYPES = {\n /** DYNAMIC */\n DYNAMIC: 1,\n\n /** STATIC */\n STATIC: 2,\n\n /** KINEMATIC */\n KINEMATIC: 4\n};\n/**\n * BodyType\n */\n\n/**\n * BODY_SLEEP_STATES\n */\nconst BODY_SLEEP_STATES = {\n /** AWAKE */\n AWAKE: 0,\n\n /** SLEEPY */\n SLEEPY: 1,\n\n /** SLEEPING */\n SLEEPING: 2\n};\n/**\n * BodySleepState\n */\n\n/**\n * Base class for all body types.\n * @example\n * const shape = new CANNON.Sphere(1)\n * const body = new CANNON.Body({\n * mass: 1,\n * shape,\n * })\n * world.addBody(body)\n */\nclass Body extends EventTarget {\n /**\n * Dispatched after two bodies collide. This event is dispatched on each\n * of the two bodies involved in the collision.\n * @event collide\n * @param body The body that was involved in the collision.\n * @param contact The details of the collision.\n */\n\n /**\n * A dynamic body is fully simulated. Can be moved manually by the user, but normally they move according to forces. A dynamic body can collide with all body types. A dynamic body always has finite, non-zero mass.\n */\n\n /**\n * A static body does not move during simulation and behaves as if it has infinite mass. Static bodies can be moved manually by setting the position of the body. The velocity of a static body is always zero. Static bodies do not collide with other static or kinematic bodies.\n */\n\n /**\n * A kinematic body moves under simulation according to its velocity. They do not respond to forces. They can be moved manually, but normally a kinematic body is moved by setting its velocity. A kinematic body behaves as if it has infinite mass. Kinematic bodies do not collide with other static or kinematic bodies.\n */\n\n /**\n * AWAKE\n */\n\n /**\n * SLEEPY\n */\n\n /**\n * SLEEPING\n */\n\n /**\n * Dispatched after a sleeping body has woken up.\n * @event wakeup\n */\n\n /**\n * Dispatched after a body has gone in to the sleepy state.\n * @event sleepy\n */\n\n /**\n * Dispatched after a body has fallen asleep.\n * @event sleep\n */\n\n /**\n * Identifier of the body.\n */\n\n /**\n * Position of body in World.bodies. Updated by World and used in ArrayCollisionMatrix.\n */\n\n /**\n * Reference to the world the body is living in.\n */\n\n /**\n * Callback function that is used BEFORE stepping the system. Use it to apply forces, for example. Inside the function, \"this\" will refer to this Body object. Deprecated - use World events instead.\n * @deprecated Use World events instead\n */\n\n /**\n * Callback function that is used AFTER stepping the system. Inside the function, \"this\" will refer to this Body object. Deprecated - use World events instead.\n * @deprecated Use World events instead\n */\n\n /**\n * The collision group the body belongs to.\n * @default 1\n */\n\n /**\n * The collision group the body can collide with.\n * @default -1\n */\n\n /**\n * Whether to produce contact forces when in contact with other bodies. Note that contacts will be generated, but they will be disabled - i.e. \"collide\" events will be raised, but forces will not be altered.\n */\n\n /**\n * World space position of the body.\n */\n\n /**\n * Interpolated position of the body.\n */\n\n /**\n * Initial position of the body.\n */\n\n /**\n * World space velocity of the body.\n */\n\n /**\n * Initial velocity of the body.\n */\n\n /**\n * Linear force on the body in world space.\n */\n\n /**\n * The mass of the body.\n * @default 0\n */\n\n /**\n * The physics material of the body. It defines the body interaction with other bodies.\n */\n\n /**\n * How much to damp the body velocity each step. It can go from 0 to 1.\n * @default 0.01\n */\n\n /**\n * One of: `Body.DYNAMIC`, `Body.STATIC` and `Body.KINEMATIC`.\n */\n\n /**\n * If true, the body will automatically fall to sleep.\n * @default true\n */\n\n /**\n * Current sleep state.\n */\n\n /**\n * If the speed (the norm of the velocity) is smaller than this value, the body is considered sleepy.\n * @default 0.1\n */\n\n /**\n * If the body has been sleepy for this sleepTimeLimit seconds, it is considered sleeping.\n * @default 1\n */\n\n /**\n * World space rotational force on the body, around center of mass.\n */\n\n /**\n * World space orientation of the body.\n */\n\n /**\n * Initial quaternion of the body.\n */\n\n /**\n * Interpolated orientation of the body.\n */\n\n /**\n * Angular velocity of the body, in world space. Think of the angular velocity as a vector, which the body rotates around. The length of this vector determines how fast (in radians per second) the body rotates.\n */\n\n /**\n * Initial angular velocity of the body.\n */\n\n /**\n * List of Shapes that have been added to the body.\n */\n\n /**\n * Position of each Shape in the body, given in local Body space.\n */\n\n /**\n * Orientation of each Shape, given in local Body space.\n */\n\n /**\n * The inertia of the body.\n */\n\n /**\n * Set to true if you don't want the body to rotate. Make sure to run .updateMassProperties() if you change this after the body creation.\n * @default false\n */\n\n /**\n * How much to damp the body angular velocity each step. It can go from 0 to 1.\n * @default 0.01\n */\n\n /**\n * Use this property to limit the motion along any world axis. (1,1,1) will allow motion along all axes while (0,0,0) allows none.\n */\n\n /**\n * Use this property to limit the rotational motion along any world axis. (1,1,1) will allow rotation along all axes while (0,0,0) allows none.\n */\n\n /**\n * World space bounding box of the body and its shapes.\n */\n\n /**\n * Indicates if the AABB needs to be updated before use.\n */\n\n /**\n * Total bounding radius of the Body including its shapes, relative to body.position.\n */\n\n /**\n * When true the body behaves like a trigger. It does not collide\n * with other bodies but collision events are still triggered.\n * @default false\n */\n constructor(options = {}) {\n super();\n this.id = void 0;\n this.index = void 0;\n this.world = void 0;\n this.preStep = void 0;\n this.postStep = void 0;\n this.vlambda = void 0;\n this.collisionFilterGroup = void 0;\n this.collisionFilterMask = void 0;\n this.collisionResponse = void 0;\n this.position = void 0;\n this.previousPosition = void 0;\n this.interpolatedPosition = void 0;\n this.initPosition = void 0;\n this.velocity = void 0;\n this.initVelocity = void 0;\n this.force = void 0;\n this.mass = void 0;\n this.invMass = void 0;\n this.material = void 0;\n this.linearDamping = void 0;\n this.type = void 0;\n this.allowSleep = void 0;\n this.sleepState = void 0;\n this.sleepSpeedLimit = void 0;\n this.sleepTimeLimit = void 0;\n this.timeLastSleepy = void 0;\n this.wakeUpAfterNarrowphase = void 0;\n this.torque = void 0;\n this.quaternion = void 0;\n this.initQuaternion = void 0;\n this.previousQuaternion = void 0;\n this.interpolatedQuaternion = void 0;\n this.angularVelocity = void 0;\n this.initAngularVelocity = void 0;\n this.shapes = void 0;\n this.shapeOffsets = void 0;\n this.shapeOrientations = void 0;\n this.inertia = void 0;\n this.invInertia = void 0;\n this.invInertiaWorld = void 0;\n this.invMassSolve = void 0;\n this.invInertiaSolve = void 0;\n this.invInertiaWorldSolve = void 0;\n this.fixedRotation = void 0;\n this.angularDamping = void 0;\n this.linearFactor = void 0;\n this.angularFactor = void 0;\n this.aabb = void 0;\n this.aabbNeedsUpdate = void 0;\n this.boundingRadius = void 0;\n this.wlambda = void 0;\n this.isTrigger = void 0;\n this.id = Body.idCounter++;\n this.index = -1;\n this.world = null;\n this.preStep = null;\n this.postStep = null;\n this.vlambda = new Vec3();\n this.collisionFilterGroup = typeof options.collisionFilterGroup === 'number' ? options.collisionFilterGroup : 1;\n this.collisionFilterMask = typeof options.collisionFilterMask === 'number' ? options.collisionFilterMask : -1;\n this.collisionResponse = typeof options.collisionResponse === 'boolean' ? options.collisionResponse : true;\n this.position = new Vec3();\n this.previousPosition = new Vec3();\n this.interpolatedPosition = new Vec3();\n this.initPosition = new Vec3();\n\n if (options.position) {\n this.position.copy(options.position);\n this.previousPosition.copy(options.position);\n this.interpolatedPosition.copy(options.position);\n this.initPosition.copy(options.position);\n }\n\n this.velocity = new Vec3();\n\n if (options.velocity) {\n this.velocity.copy(options.velocity);\n }\n\n this.initVelocity = new Vec3();\n this.force = new Vec3();\n const mass = typeof options.mass === 'number' ? options.mass : 0;\n this.mass = mass;\n this.invMass = mass > 0 ? 1.0 / mass : 0;\n this.material = options.material || null;\n this.linearDamping = typeof options.linearDamping === 'number' ? options.linearDamping : 0.01;\n this.type = mass <= 0.0 ? Body.STATIC : Body.DYNAMIC;\n\n if (typeof options.type === typeof Body.STATIC) {\n this.type = options.type;\n }\n\n this.allowSleep = typeof options.allowSleep !== 'undefined' ? options.allowSleep : true;\n this.sleepState = Body.AWAKE;\n this.sleepSpeedLimit = typeof options.sleepSpeedLimit !== 'undefined' ? options.sleepSpeedLimit : 0.1;\n this.sleepTimeLimit = typeof options.sleepTimeLimit !== 'undefined' ? options.sleepTimeLimit : 1;\n this.timeLastSleepy = 0;\n this.wakeUpAfterNarrowphase = false;\n this.torque = new Vec3();\n this.quaternion = new Quaternion();\n this.initQuaternion = new Quaternion();\n this.previousQuaternion = new Quaternion();\n this.interpolatedQuaternion = new Quaternion();\n\n if (options.quaternion) {\n this.quaternion.copy(options.quaternion);\n this.initQuaternion.copy(options.quaternion);\n this.previousQuaternion.copy(options.quaternion);\n this.interpolatedQuaternion.copy(options.quaternion);\n }\n\n this.angularVelocity = new Vec3();\n\n if (options.angularVelocity) {\n this.angularVelocity.copy(options.angularVelocity);\n }\n\n this.initAngularVelocity = new Vec3();\n this.shapes = [];\n this.shapeOffsets = [];\n this.shapeOrientations = [];\n this.inertia = new Vec3();\n this.invInertia = new Vec3();\n this.invInertiaWorld = new Mat3();\n this.invMassSolve = 0;\n this.invInertiaSolve = new Vec3();\n this.invInertiaWorldSolve = new Mat3();\n this.fixedRotation = typeof options.fixedRotation !== 'undefined' ? options.fixedRotation : false;\n this.angularDamping = typeof options.angularDamping !== 'undefined' ? options.angularDamping : 0.01;\n this.linearFactor = new Vec3(1, 1, 1);\n\n if (options.linearFactor) {\n this.linearFactor.copy(options.linearFactor);\n }\n\n this.angularFactor = new Vec3(1, 1, 1);\n\n if (options.angularFactor) {\n this.angularFactor.copy(options.angularFactor);\n }\n\n this.aabb = new AABB();\n this.aabbNeedsUpdate = true;\n this.boundingRadius = 0;\n this.wlambda = new Vec3();\n this.isTrigger = Boolean(options.isTrigger);\n\n if (options.shape) {\n this.addShape(options.shape);\n }\n\n this.updateMassProperties();\n }\n /**\n * Wake the body up.\n */\n\n\n wakeUp() {\n const prevState = this.sleepState;\n this.sleepState = Body.AWAKE;\n this.wakeUpAfterNarrowphase = false;\n\n if (prevState === Body.SLEEPING) {\n this.dispatchEvent(Body.wakeupEvent);\n }\n }\n /**\n * Force body sleep\n */\n\n\n sleep() {\n this.sleepState = Body.SLEEPING;\n this.velocity.set(0, 0, 0);\n this.angularVelocity.set(0, 0, 0);\n this.wakeUpAfterNarrowphase = false;\n }\n /**\n * Called every timestep to update internal sleep timer and change sleep state if needed.\n * @param time The world time in seconds\n */\n\n\n sleepTick(time) {\n if (this.allowSleep) {\n const sleepState = this.sleepState;\n const speedSquared = this.velocity.lengthSquared() + this.angularVelocity.lengthSquared();\n const speedLimitSquared = this.sleepSpeedLimit ** 2;\n\n if (sleepState === Body.AWAKE && speedSquared < speedLimitSquared) {\n this.sleepState = Body.SLEEPY; // Sleepy\n\n this.timeLastSleepy = time;\n this.dispatchEvent(Body.sleepyEvent);\n } else if (sleepState === Body.SLEEPY && speedSquared > speedLimitSquared) {\n this.wakeUp(); // Wake up\n } else if (sleepState === Body.SLEEPY && time - this.timeLastSleepy > this.sleepTimeLimit) {\n this.sleep(); // Sleeping\n\n this.dispatchEvent(Body.sleepEvent);\n }\n }\n }\n /**\n * If the body is sleeping, it should be immovable / have infinite mass during solve. We solve it by having a separate \"solve mass\".\n */\n\n\n updateSolveMassProperties() {\n if (this.sleepState === Body.SLEEPING || this.type === Body.KINEMATIC) {\n this.invMassSolve = 0;\n this.invInertiaSolve.setZero();\n this.invInertiaWorldSolve.setZero();\n } else {\n this.invMassSolve = this.invMass;\n this.invInertiaSolve.copy(this.invInertia);\n this.invInertiaWorldSolve.copy(this.invInertiaWorld);\n }\n }\n /**\n * Convert a world point to local body frame.\n */\n\n\n pointToLocalFrame(worldPoint, result = new Vec3()) {\n worldPoint.vsub(this.position, result);\n this.quaternion.conjugate().vmult(result, result);\n return result;\n }\n /**\n * Convert a world vector to local body frame.\n */\n\n\n vectorToLocalFrame(worldVector, result = new Vec3()) {\n this.quaternion.conjugate().vmult(worldVector, result);\n return result;\n }\n /**\n * Convert a local body point to world frame.\n */\n\n\n pointToWorldFrame(localPoint, result = new Vec3()) {\n this.quaternion.vmult(localPoint, result);\n result.vadd(this.position, result);\n return result;\n }\n /**\n * Convert a local body point to world frame.\n */\n\n\n vectorToWorldFrame(localVector, result = new Vec3()) {\n this.quaternion.vmult(localVector, result);\n return result;\n }\n /**\n * Add a shape to the body with a local offset and orientation.\n * @return The body object, for chainability.\n */\n\n\n addShape(shape, _offset, _orientation) {\n const offset = new Vec3();\n const orientation = new Quaternion();\n\n if (_offset) {\n offset.copy(_offset);\n }\n\n if (_orientation) {\n orientation.copy(_orientation);\n }\n\n this.shapes.push(shape);\n this.shapeOffsets.push(offset);\n this.shapeOrientations.push(orientation);\n this.updateMassProperties();\n this.updateBoundingRadius();\n this.aabbNeedsUpdate = true;\n shape.body = this;\n return this;\n }\n /**\n * Remove a shape from the body.\n * @return The body object, for chainability.\n */\n\n\n removeShape(shape) {\n const index = this.shapes.indexOf(shape);\n\n if (index === -1) {\n console.warn('Shape does not belong to the body');\n return this;\n }\n\n this.shapes.splice(index, 1);\n this.shapeOffsets.splice(index, 1);\n this.shapeOrientations.splice(index, 1);\n this.updateMassProperties();\n this.updateBoundingRadius();\n this.aabbNeedsUpdate = true;\n shape.body = null;\n return this;\n }\n /**\n * Update the bounding radius of the body. Should be done if any of the shapes are changed.\n */\n\n\n updateBoundingRadius() {\n const shapes = this.shapes;\n const shapeOffsets = this.shapeOffsets;\n const N = shapes.length;\n let radius = 0;\n\n for (let i = 0; i !== N; i++) {\n const shape = shapes[i];\n shape.updateBoundingSphereRadius();\n const offset = shapeOffsets[i].length();\n const r = shape.boundingSphereRadius;\n\n if (offset + r > radius) {\n radius = offset + r;\n }\n }\n\n this.boundingRadius = radius;\n }\n /**\n * Updates the .aabb\n */\n\n\n updateAABB() {\n const shapes = this.shapes;\n const shapeOffsets = this.shapeOffsets;\n const shapeOrientations = this.shapeOrientations;\n const N = shapes.length;\n const offset = tmpVec;\n const orientation = tmpQuat;\n const bodyQuat = this.quaternion;\n const aabb = this.aabb;\n const shapeAABB = updateAABB_shapeAABB;\n\n for (let i = 0; i !== N; i++) {\n const shape = shapes[i]; // Get shape world position\n\n bodyQuat.vmult(shapeOffsets[i], offset);\n offset.vadd(this.position, offset); // Get shape world quaternion\n\n bodyQuat.mult(shapeOrientations[i], orientation); // Get shape AABB\n\n shape.calculateWorldAABB(offset, orientation, shapeAABB.lowerBound, shapeAABB.upperBound);\n\n if (i === 0) {\n aabb.copy(shapeAABB);\n } else {\n aabb.extend(shapeAABB);\n }\n }\n\n this.aabbNeedsUpdate = false;\n }\n /**\n * Update `.inertiaWorld` and `.invInertiaWorld`\n */\n\n\n updateInertiaWorld(force) {\n const I = this.invInertia;\n\n if (I.x === I.y && I.y === I.z && !force) ; else {\n const m1 = uiw_m1;\n const m2 = uiw_m2;\n m1.setRotationFromQuaternion(this.quaternion);\n m1.transpose(m2);\n m1.scale(I, m1);\n m1.mmult(m2, this.invInertiaWorld);\n }\n }\n /**\n * Apply force to a point of the body. This could for example be a point on the Body surface.\n * Applying force this way will add to Body.force and Body.torque.\n * @param force The amount of force to add.\n * @param relativePoint A point relative to the center of mass to apply the force on.\n */\n\n\n applyForce(force, relativePoint = new Vec3()) {\n // Needed?\n if (this.type !== Body.DYNAMIC) {\n return;\n }\n\n if (this.sleepState === Body.SLEEPING) {\n this.wakeUp();\n } // Compute produced rotational force\n\n\n const rotForce = Body_applyForce_rotForce;\n relativePoint.cross(force, rotForce); // Add linear force\n\n this.force.vadd(force, this.force); // Add rotational force\n\n this.torque.vadd(rotForce, this.torque);\n }\n /**\n * Apply force to a local point in the body.\n * @param force The force vector to apply, defined locally in the body frame.\n * @param localPoint A local point in the body to apply the force on.\n */\n\n\n applyLocalForce(localForce, localPoint = new Vec3()) {\n if (this.type !== Body.DYNAMIC) {\n return;\n }\n\n const worldForce = Body_applyLocalForce_worldForce;\n const relativePointWorld = Body_applyLocalForce_relativePointWorld; // Transform the force vector to world space\n\n this.vectorToWorldFrame(localForce, worldForce);\n this.vectorToWorldFrame(localPoint, relativePointWorld);\n this.applyForce(worldForce, relativePointWorld);\n }\n /**\n * Apply torque to the body.\n * @param torque The amount of torque to add.\n */\n\n\n applyTorque(torque) {\n if (this.type !== Body.DYNAMIC) {\n return;\n }\n\n if (this.sleepState === Body.SLEEPING) {\n this.wakeUp();\n } // Add rotational force\n\n\n this.torque.vadd(torque, this.torque);\n }\n /**\n * Apply impulse to a point of the body. This could for example be a point on the Body surface.\n * An impulse is a force added to a body during a short period of time (impulse = force * time).\n * Impulses will be added to Body.velocity and Body.angularVelocity.\n * @param impulse The amount of impulse to add.\n * @param relativePoint A point relative to the center of mass to apply the force on.\n */\n\n\n applyImpulse(impulse, relativePoint = new Vec3()) {\n if (this.type !== Body.DYNAMIC) {\n return;\n }\n\n if (this.sleepState === Body.SLEEPING) {\n this.wakeUp();\n } // Compute point position relative to the body center\n\n\n const r = relativePoint; // Compute produced central impulse velocity\n\n const velo = Body_applyImpulse_velo;\n velo.copy(impulse);\n velo.scale(this.invMass, velo); // Add linear impulse\n\n this.velocity.vadd(velo, this.velocity); // Compute produced rotational impulse velocity\n\n const rotVelo = Body_applyImpulse_rotVelo;\n r.cross(impulse, rotVelo);\n /*\n rotVelo.x *= this.invInertia.x;\n rotVelo.y *= this.invInertia.y;\n rotVelo.z *= this.invInertia.z;\n */\n\n this.invInertiaWorld.vmult(rotVelo, rotVelo); // Add rotational Impulse\n\n this.angularVelocity.vadd(rotVelo, this.angularVelocity);\n }\n /**\n * Apply locally-defined impulse to a local point in the body.\n * @param force The force vector to apply, defined locally in the body frame.\n * @param localPoint A local point in the body to apply the force on.\n */\n\n\n applyLocalImpulse(localImpulse, localPoint = new Vec3()) {\n if (this.type !== Body.DYNAMIC) {\n return;\n }\n\n const worldImpulse = Body_applyLocalImpulse_worldImpulse;\n const relativePointWorld = Body_applyLocalImpulse_relativePoint; // Transform the force vector to world space\n\n this.vectorToWorldFrame(localImpulse, worldImpulse);\n this.vectorToWorldFrame(localPoint, relativePointWorld);\n this.applyImpulse(worldImpulse, relativePointWorld);\n }\n /**\n * Should be called whenever you change the body shape or mass.\n */\n\n\n updateMassProperties() {\n const halfExtents = Body_updateMassProperties_halfExtents;\n this.invMass = this.mass > 0 ? 1.0 / this.mass : 0;\n const I = this.inertia;\n const fixed = this.fixedRotation; // Approximate with AABB box\n\n this.updateAABB();\n halfExtents.set((this.aabb.upperBound.x - this.aabb.lowerBound.x) / 2, (this.aabb.upperBound.y - this.aabb.lowerBound.y) / 2, (this.aabb.upperBound.z - this.aabb.lowerBound.z) / 2);\n Box.calculateInertia(halfExtents, this.mass, I);\n this.invInertia.set(I.x > 0 && !fixed ? 1.0 / I.x : 0, I.y > 0 && !fixed ? 1.0 / I.y : 0, I.z > 0 && !fixed ? 1.0 / I.z : 0);\n this.updateInertiaWorld(true);\n }\n /**\n * Get world velocity of a point in the body.\n * @param worldPoint\n * @param result\n * @return The result vector.\n */\n\n\n getVelocityAtWorldPoint(worldPoint, result) {\n const r = new Vec3();\n worldPoint.vsub(this.position, r);\n this.angularVelocity.cross(r, result);\n this.velocity.vadd(result, result);\n return result;\n }\n /**\n * Move the body forward in time.\n * @param dt Time step\n * @param quatNormalize Set to true to normalize the body quaternion\n * @param quatNormalizeFast If the quaternion should be normalized using \"fast\" quaternion normalization\n */\n\n\n integrate(dt, quatNormalize, quatNormalizeFast) {\n // Save previous position\n this.previousPosition.copy(this.position);\n this.previousQuaternion.copy(this.quaternion);\n\n if (!(this.type === Body.DYNAMIC || this.type === Body.KINEMATIC) || this.sleepState === Body.SLEEPING) {\n // Only for dynamic\n return;\n }\n\n const velo = this.velocity;\n const angularVelo = this.angularVelocity;\n const pos = this.position;\n const force = this.force;\n const torque = this.torque;\n const quat = this.quaternion;\n const invMass = this.invMass;\n const invInertia = this.invInertiaWorld;\n const linearFactor = this.linearFactor;\n const iMdt = invMass * dt;\n velo.x += force.x * iMdt * linearFactor.x;\n velo.y += force.y * iMdt * linearFactor.y;\n velo.z += force.z * iMdt * linearFactor.z;\n const e = invInertia.elements;\n const angularFactor = this.angularFactor;\n const tx = torque.x * angularFactor.x;\n const ty = torque.y * angularFactor.y;\n const tz = torque.z * angularFactor.z;\n angularVelo.x += dt * (e[0] * tx + e[1] * ty + e[2] * tz);\n angularVelo.y += dt * (e[3] * tx + e[4] * ty + e[5] * tz);\n angularVelo.z += dt * (e[6] * tx + e[7] * ty + e[8] * tz); // Use new velocity - leap frog\n\n pos.x += velo.x * dt;\n pos.y += velo.y * dt;\n pos.z += velo.z * dt;\n quat.integrate(this.angularVelocity, dt, this.angularFactor, quat);\n\n if (quatNormalize) {\n if (quatNormalizeFast) {\n quat.normalizeFast();\n } else {\n quat.normalize();\n }\n }\n\n this.aabbNeedsUpdate = true; // Update world inertia\n\n this.updateInertiaWorld();\n }\n\n}\nBody.idCounter = 0;\nBody.COLLIDE_EVENT_NAME = 'collide';\nBody.DYNAMIC = BODY_TYPES.DYNAMIC;\nBody.STATIC = BODY_TYPES.STATIC;\nBody.KINEMATIC = BODY_TYPES.KINEMATIC;\nBody.AWAKE = BODY_SLEEP_STATES.AWAKE;\nBody.SLEEPY = BODY_SLEEP_STATES.SLEEPY;\nBody.SLEEPING = BODY_SLEEP_STATES.SLEEPING;\nBody.wakeupEvent = {\n type: 'wakeup'\n};\nBody.sleepyEvent = {\n type: 'sleepy'\n};\nBody.sleepEvent = {\n type: 'sleep'\n};\nconst tmpVec = new Vec3();\nconst tmpQuat = new Quaternion();\nconst updateAABB_shapeAABB = new AABB();\nconst uiw_m1 = new Mat3();\nconst uiw_m2 = new Mat3();\nconst Body_applyForce_rotForce = new Vec3();\nconst Body_applyLocalForce_worldForce = new Vec3();\nconst Body_applyLocalForce_relativePointWorld = new Vec3();\nconst Body_applyImpulse_velo = new Vec3();\nconst Body_applyImpulse_rotVelo = new Vec3();\nconst Body_applyLocalImpulse_worldImpulse = new Vec3();\nconst Body_applyLocalImpulse_relativePoint = new Vec3();\nconst Body_updateMassProperties_halfExtents = new Vec3();\n\n/**\n * Base class for broadphase implementations\n * @author schteppe\n */\nclass Broadphase {\n /**\n * The world to search for collisions in.\n */\n\n /**\n * If set to true, the broadphase uses bounding boxes for intersection tests, else it uses bounding spheres.\n */\n\n /**\n * Set to true if the objects in the world moved.\n */\n constructor() {\n this.world = void 0;\n this.useBoundingBoxes = void 0;\n this.dirty = void 0;\n this.world = null;\n this.useBoundingBoxes = false;\n this.dirty = true;\n }\n /**\n * Get the collision pairs from the world\n * @param world The world to search in\n * @param p1 Empty array to be filled with body objects\n * @param p2 Empty array to be filled with body objects\n */\n\n\n collisionPairs(world, p1, p2) {\n throw new Error('collisionPairs not implemented for this BroadPhase class!');\n }\n /**\n * Check if a body pair needs to be intersection tested at all.\n */\n\n\n needBroadphaseCollision(bodyA, bodyB) {\n // Check collision filter masks\n if ((bodyA.collisionFilterGroup & bodyB.collisionFilterMask) === 0 || (bodyB.collisionFilterGroup & bodyA.collisionFilterMask) === 0) {\n return false;\n } // Check types\n\n\n if (((bodyA.type & Body.STATIC) !== 0 || bodyA.sleepState === Body.SLEEPING) && ((bodyB.type & Body.STATIC) !== 0 || bodyB.sleepState === Body.SLEEPING)) {\n // Both bodies are static or sleeping. Skip.\n return false;\n }\n\n return true;\n }\n /**\n * Check if the bounding volumes of two bodies intersect.\n */\n\n\n intersectionTest(bodyA, bodyB, pairs1, pairs2) {\n if (this.useBoundingBoxes) {\n this.doBoundingBoxBroadphase(bodyA, bodyB, pairs1, pairs2);\n } else {\n this.doBoundingSphereBroadphase(bodyA, bodyB, pairs1, pairs2);\n }\n }\n /**\n * Check if the bounding spheres of two bodies are intersecting.\n * @param pairs1 bodyA is appended to this array if intersection\n * @param pairs2 bodyB is appended to this array if intersection\n */\n\n\n doBoundingSphereBroadphase(bodyA, bodyB, pairs1, pairs2) {\n const r = Broadphase_collisionPairs_r;\n bodyB.position.vsub(bodyA.position, r);\n const boundingRadiusSum2 = (bodyA.boundingRadius + bodyB.boundingRadius) ** 2;\n const norm2 = r.lengthSquared();\n\n if (norm2 < boundingRadiusSum2) {\n pairs1.push(bodyA);\n pairs2.push(bodyB);\n }\n }\n /**\n * Check if the bounding boxes of two bodies are intersecting.\n */\n\n\n doBoundingBoxBroadphase(bodyA, bodyB, pairs1, pairs2) {\n if (bodyA.aabbNeedsUpdate) {\n bodyA.updateAABB();\n }\n\n if (bodyB.aabbNeedsUpdate) {\n bodyB.updateAABB();\n } // Check AABB / AABB\n\n\n if (bodyA.aabb.overlaps(bodyB.aabb)) {\n pairs1.push(bodyA);\n pairs2.push(bodyB);\n }\n }\n /**\n * Removes duplicate pairs from the pair arrays.\n */\n\n\n makePairsUnique(pairs1, pairs2) {\n const t = Broadphase_makePairsUnique_temp;\n const p1 = Broadphase_makePairsUnique_p1;\n const p2 = Broadphase_makePairsUnique_p2;\n const N = pairs1.length;\n\n for (let i = 0; i !== N; i++) {\n p1[i] = pairs1[i];\n p2[i] = pairs2[i];\n }\n\n pairs1.length = 0;\n pairs2.length = 0;\n\n for (let i = 0; i !== N; i++) {\n const id1 = p1[i].id;\n const id2 = p2[i].id;\n const key = id1 < id2 ? id1 + \",\" + id2 : id2 + \",\" + id1;\n t[key] = i;\n t.keys.push(key);\n }\n\n for (let i = 0; i !== t.keys.length; i++) {\n const key = t.keys.pop();\n const pairIndex = t[key];\n pairs1.push(p1[pairIndex]);\n pairs2.push(p2[pairIndex]);\n delete t[key];\n }\n }\n /**\n * To be implemented by subcasses\n */\n\n\n setWorld(world) {}\n /**\n * Check if the bounding spheres of two bodies overlap.\n */\n\n\n static boundingSphereCheck(bodyA, bodyB) {\n const dist = new Vec3(); // bsc_dist;\n\n bodyA.position.vsub(bodyB.position, dist);\n const sa = bodyA.shapes[0];\n const sb = bodyB.shapes[0];\n return Math.pow(sa.boundingSphereRadius + sb.boundingSphereRadius, 2) > dist.lengthSquared();\n }\n /**\n * Returns all the bodies within the AABB.\n */\n\n\n aabbQuery(world, aabb, result) {\n console.warn('.aabbQuery is not implemented in this Broadphase subclass.');\n return [];\n }\n\n} // Temp objects\n\nconst Broadphase_collisionPairs_r = new Vec3();\nconst Broadphase_makePairsUnique_temp = {\n keys: []\n};\nconst Broadphase_makePairsUnique_p1 = [];\nconst Broadphase_makePairsUnique_p2 = [];\n\n/**\n * Axis aligned uniform grid broadphase.\n * @todo Needs support for more than just planes and spheres.\n */\nclass GridBroadphase extends Broadphase {\n /**\n * Number of boxes along x\n */\n\n /**\n * Number of boxes along y\n */\n\n /**\n * Number of boxes along z\n */\n\n /**\n * aabbMin\n */\n\n /**\n * aabbMax\n */\n\n /**\n * bins\n */\n\n /**\n * binLengths\n */\n\n /**\n * @param nx Number of boxes along x.\n * @param ny Number of boxes along y.\n * @param nz Number of boxes along z.\n */\n constructor(aabbMin = new Vec3(100, 100, 100), aabbMax = new Vec3(-100, -100, -100), nx = 10, ny = 10, nz = 10) {\n super();\n this.nx = void 0;\n this.ny = void 0;\n this.nz = void 0;\n this.aabbMin = void 0;\n this.aabbMax = void 0;\n this.bins = void 0;\n this.binLengths = void 0;\n this.nx = nx;\n this.ny = ny;\n this.nz = nz;\n this.aabbMin = aabbMin;\n this.aabbMax = aabbMax;\n const nbins = this.nx * this.ny * this.nz;\n\n if (nbins <= 0) {\n throw \"GridBroadphase: Each dimension's n must be >0\";\n }\n\n this.bins = [];\n this.binLengths = []; // Rather than continually resizing arrays (thrashing the memory), just record length and allow them to grow\n\n this.bins.length = nbins;\n this.binLengths.length = nbins;\n\n for (let i = 0; i < nbins; i++) {\n this.bins[i] = [];\n this.binLengths[i] = 0;\n }\n }\n /**\n * Get all the collision pairs in the physics world\n */\n\n\n collisionPairs(world, pairs1, pairs2) {\n const N = world.numObjects();\n const bodies = world.bodies;\n const max = this.aabbMax;\n const min = this.aabbMin;\n const nx = this.nx;\n const ny = this.ny;\n const nz = this.nz;\n const xstep = ny * nz;\n const ystep = nz;\n const zstep = 1;\n const xmax = max.x;\n const ymax = max.y;\n const zmax = max.z;\n const xmin = min.x;\n const ymin = min.y;\n const zmin = min.z;\n const xmult = nx / (xmax - xmin);\n const ymult = ny / (ymax - ymin);\n const zmult = nz / (zmax - zmin);\n const binsizeX = (xmax - xmin) / nx;\n const binsizeY = (ymax - ymin) / ny;\n const binsizeZ = (zmax - zmin) / nz;\n const binRadius = Math.sqrt(binsizeX * binsizeX + binsizeY * binsizeY + binsizeZ * binsizeZ) * 0.5;\n const types = Shape.types;\n const SPHERE = types.SPHERE;\n const PLANE = types.PLANE;\n types.BOX;\n types.COMPOUND;\n types.CONVEXPOLYHEDRON;\n const bins = this.bins;\n const binLengths = this.binLengths;\n const Nbins = this.bins.length; // Reset bins\n\n for (let i = 0; i !== Nbins; i++) {\n binLengths[i] = 0;\n }\n\n const ceil = Math.ceil;\n\n function addBoxToBins(x0, y0, z0, x1, y1, z1, bi) {\n let xoff0 = (x0 - xmin) * xmult | 0;\n let yoff0 = (y0 - ymin) * ymult | 0;\n let zoff0 = (z0 - zmin) * zmult | 0;\n let xoff1 = ceil((x1 - xmin) * xmult);\n let yoff1 = ceil((y1 - ymin) * ymult);\n let zoff1 = ceil((z1 - zmin) * zmult);\n\n if (xoff0 < 0) {\n xoff0 = 0;\n } else if (xoff0 >= nx) {\n xoff0 = nx - 1;\n }\n\n if (yoff0 < 0) {\n yoff0 = 0;\n } else if (yoff0 >= ny) {\n yoff0 = ny - 1;\n }\n\n if (zoff0 < 0) {\n zoff0 = 0;\n } else if (zoff0 >= nz) {\n zoff0 = nz - 1;\n }\n\n if (xoff1 < 0) {\n xoff1 = 0;\n } else if (xoff1 >= nx) {\n xoff1 = nx - 1;\n }\n\n if (yoff1 < 0) {\n yoff1 = 0;\n } else if (yoff1 >= ny) {\n yoff1 = ny - 1;\n }\n\n if (zoff1 < 0) {\n zoff1 = 0;\n } else if (zoff1 >= nz) {\n zoff1 = nz - 1;\n }\n\n xoff0 *= xstep;\n yoff0 *= ystep;\n zoff0 *= zstep;\n xoff1 *= xstep;\n yoff1 *= ystep;\n zoff1 *= zstep;\n\n for (let xoff = xoff0; xoff <= xoff1; xoff += xstep) {\n for (let yoff = yoff0; yoff <= yoff1; yoff += ystep) {\n for (let zoff = zoff0; zoff <= zoff1; zoff += zstep) {\n const idx = xoff + yoff + zoff;\n bins[idx][binLengths[idx]++] = bi;\n }\n }\n }\n } // Put all bodies into the bins\n\n\n for (let i = 0; i !== N; i++) {\n const bi = bodies[i];\n const si = bi.shapes[0];\n\n switch (si.type) {\n case SPHERE:\n {\n const shape = si; // Put in bin\n // check if overlap with other bins\n\n const x = bi.position.x;\n const y = bi.position.y;\n const z = bi.position.z;\n const r = shape.radius;\n addBoxToBins(x - r, y - r, z - r, x + r, y + r, z + r, bi);\n break;\n }\n\n case PLANE:\n {\n const shape = si;\n\n if (shape.worldNormalNeedsUpdate) {\n shape.computeWorldNormal(bi.quaternion);\n }\n\n const planeNormal = shape.worldNormal; //Relative position from origin of plane object to the first bin\n //Incremented as we iterate through the bins\n\n const xreset = xmin + binsizeX * 0.5 - bi.position.x;\n const yreset = ymin + binsizeY * 0.5 - bi.position.y;\n const zreset = zmin + binsizeZ * 0.5 - bi.position.z;\n const d = GridBroadphase_collisionPairs_d;\n d.set(xreset, yreset, zreset);\n\n for (let xi = 0, xoff = 0; xi !== nx; xi++, xoff += xstep, d.y = yreset, d.x += binsizeX) {\n for (let yi = 0, yoff = 0; yi !== ny; yi++, yoff += ystep, d.z = zreset, d.y += binsizeY) {\n for (let zi = 0, zoff = 0; zi !== nz; zi++, zoff += zstep, d.z += binsizeZ) {\n if (d.dot(planeNormal) < binRadius) {\n const idx = xoff + yoff + zoff;\n bins[idx][binLengths[idx]++] = bi;\n }\n }\n }\n }\n\n break;\n }\n\n default:\n {\n if (bi.aabbNeedsUpdate) {\n bi.updateAABB();\n }\n\n addBoxToBins(bi.aabb.lowerBound.x, bi.aabb.lowerBound.y, bi.aabb.lowerBound.z, bi.aabb.upperBound.x, bi.aabb.upperBound.y, bi.aabb.upperBound.z, bi);\n break;\n }\n }\n } // Check each bin\n\n\n for (let i = 0; i !== Nbins; i++) {\n const binLength = binLengths[i]; //Skip bins with no potential collisions\n\n if (binLength > 1) {\n const bin = bins[i]; // Do N^2 broadphase inside\n\n for (let xi = 0; xi !== binLength; xi++) {\n const bi = bin[xi];\n\n for (let yi = 0; yi !== xi; yi++) {\n const bj = bin[yi];\n\n if (this.needBroadphaseCollision(bi, bj)) {\n this.intersectionTest(bi, bj, pairs1, pairs2);\n }\n }\n }\n }\n } //\tfor (let zi = 0, zoff=0; zi < nz; zi++, zoff+= zstep) {\n //\t\tconsole.log(\"layer \"+zi);\n //\t\tfor (let yi = 0, yoff=0; yi < ny; yi++, yoff += ystep) {\n //\t\t\tconst row = '';\n //\t\t\tfor (let xi = 0, xoff=0; xi < nx; xi++, xoff += xstep) {\n //\t\t\t\tconst idx = xoff + yoff + zoff;\n //\t\t\t\trow += ' ' + binLengths[idx];\n //\t\t\t}\n //\t\t\tconsole.log(row);\n //\t\t}\n //\t}\n\n\n this.makePairsUnique(pairs1, pairs2);\n }\n\n}\nconst GridBroadphase_collisionPairs_d = new Vec3();\n\n/**\n * Naive broadphase implementation, used in lack of better ones.\n *\n * The naive broadphase looks at all possible pairs without restriction, therefore it has complexity N^2 _(which is bad)_\n */\nclass NaiveBroadphase extends Broadphase {\n /**\n * @todo Remove useless constructor\n */\n constructor() {\n super();\n }\n /**\n * Get all the collision pairs in the physics world\n */\n\n\n collisionPairs(world, pairs1, pairs2) {\n const bodies = world.bodies;\n const n = bodies.length;\n let bi;\n let bj; // Naive N^2 ftw!\n\n for (let i = 0; i !== n; i++) {\n for (let j = 0; j !== i; j++) {\n bi = bodies[i];\n bj = bodies[j];\n\n if (!this.needBroadphaseCollision(bi, bj)) {\n continue;\n }\n\n this.intersectionTest(bi, bj, pairs1, pairs2);\n }\n }\n }\n /**\n * Returns all the bodies within an AABB.\n * @param result An array to store resulting bodies in.\n */\n\n\n aabbQuery(world, aabb, result = []) {\n for (let i = 0; i < world.bodies.length; i++) {\n const b = world.bodies[i];\n\n if (b.aabbNeedsUpdate) {\n b.updateAABB();\n } // Ugly hack until Body gets aabb\n\n\n if (b.aabb.overlaps(aabb)) {\n result.push(b);\n }\n }\n\n return result;\n }\n\n}\n\n/**\n * Storage for Ray casting data\n */\nclass RaycastResult {\n /**\n * rayFromWorld\n */\n\n /**\n * rayToWorld\n */\n\n /**\n * hitNormalWorld\n */\n\n /**\n * hitPointWorld\n */\n\n /**\n * hasHit\n */\n\n /**\n * shape\n */\n\n /**\n * body\n */\n\n /**\n * The index of the hit triangle, if the hit shape was a trimesh\n */\n\n /**\n * Distance to the hit. Will be set to -1 if there was no hit\n */\n\n /**\n * If the ray should stop traversing the bodies\n */\n constructor() {\n this.rayFromWorld = void 0;\n this.rayToWorld = void 0;\n this.hitNormalWorld = void 0;\n this.hitPointWorld = void 0;\n this.hasHit = void 0;\n this.shape = void 0;\n this.body = void 0;\n this.hitFaceIndex = void 0;\n this.distance = void 0;\n this.shouldStop = void 0;\n this.rayFromWorld = new Vec3();\n this.rayToWorld = new Vec3();\n this.hitNormalWorld = new Vec3();\n this.hitPointWorld = new Vec3();\n this.hasHit = false;\n this.shape = null;\n this.body = null;\n this.hitFaceIndex = -1;\n this.distance = -1;\n this.shouldStop = false;\n }\n /**\n * Reset all result data.\n */\n\n\n reset() {\n this.rayFromWorld.setZero();\n this.rayToWorld.setZero();\n this.hitNormalWorld.setZero();\n this.hitPointWorld.setZero();\n this.hasHit = false;\n this.shape = null;\n this.body = null;\n this.hitFaceIndex = -1;\n this.distance = -1;\n this.shouldStop = false;\n }\n /**\n * abort\n */\n\n\n abort() {\n this.shouldStop = true;\n }\n /**\n * Set result data.\n */\n\n\n set(rayFromWorld, rayToWorld, hitNormalWorld, hitPointWorld, shape, body, distance) {\n this.rayFromWorld.copy(rayFromWorld);\n this.rayToWorld.copy(rayToWorld);\n this.hitNormalWorld.copy(hitNormalWorld);\n this.hitPointWorld.copy(hitPointWorld);\n this.shape = shape;\n this.body = body;\n this.distance = distance;\n }\n\n}\n\nlet _Shape$types$SPHERE, _Shape$types$PLANE, _Shape$types$BOX, _Shape$types$CYLINDER, _Shape$types$CONVEXPO, _Shape$types$HEIGHTFI, _Shape$types$TRIMESH;\n\n/**\n * RAY_MODES\n */\nconst RAY_MODES = {\n /** CLOSEST */\n CLOSEST: 1,\n\n /** ANY */\n ANY: 2,\n\n /** ALL */\n ALL: 4\n};\n/**\n * RayMode\n */\n\n_Shape$types$SPHERE = Shape.types.SPHERE;\n_Shape$types$PLANE = Shape.types.PLANE;\n_Shape$types$BOX = Shape.types.BOX;\n_Shape$types$CYLINDER = Shape.types.CYLINDER;\n_Shape$types$CONVEXPO = Shape.types.CONVEXPOLYHEDRON;\n_Shape$types$HEIGHTFI = Shape.types.HEIGHTFIELD;\n_Shape$types$TRIMESH = Shape.types.TRIMESH;\n\n/**\n * A line in 3D space that intersects bodies and return points.\n */\nclass Ray {\n /**\n * from\n */\n\n /**\n * to\n */\n\n /**\n * direction\n */\n\n /**\n * The precision of the ray. Used when checking parallelity etc.\n * @default 0.0001\n */\n\n /**\n * Set to `false` if you don't want the Ray to take `collisionResponse` flags into account on bodies and shapes.\n * @default true\n */\n\n /**\n * If set to `true`, the ray skips any hits with normal.dot(rayDirection) < 0.\n * @default false\n */\n\n /**\n * collisionFilterMask\n * @default -1\n */\n\n /**\n * collisionFilterGroup\n * @default -1\n */\n\n /**\n * The intersection mode. Should be Ray.ANY, Ray.ALL or Ray.CLOSEST.\n * @default RAY.ANY\n */\n\n /**\n * Current result object.\n */\n\n /**\n * Will be set to `true` during intersectWorld() if the ray hit anything.\n */\n\n /**\n * User-provided result callback. Will be used if mode is Ray.ALL.\n */\n\n /**\n * CLOSEST\n */\n\n /**\n * ANY\n */\n\n /**\n * ALL\n */\n get [_Shape$types$SPHERE]() {\n return this._intersectSphere;\n }\n\n get [_Shape$types$PLANE]() {\n return this._intersectPlane;\n }\n\n get [_Shape$types$BOX]() {\n return this._intersectBox;\n }\n\n get [_Shape$types$CYLINDER]() {\n return this._intersectConvex;\n }\n\n get [_Shape$types$CONVEXPO]() {\n return this._intersectConvex;\n }\n\n get [_Shape$types$HEIGHTFI]() {\n return this._intersectHeightfield;\n }\n\n get [_Shape$types$TRIMESH]() {\n return this._intersectTrimesh;\n }\n\n constructor(from = new Vec3(), to = new Vec3()) {\n this.from = void 0;\n this.to = void 0;\n this.direction = void 0;\n this.precision = void 0;\n this.checkCollisionResponse = void 0;\n this.skipBackfaces = void 0;\n this.collisionFilterMask = void 0;\n this.collisionFilterGroup = void 0;\n this.mode = void 0;\n this.result = void 0;\n this.hasHit = void 0;\n this.callback = void 0;\n this.from = from.clone();\n this.to = to.clone();\n this.direction = new Vec3();\n this.precision = 0.0001;\n this.checkCollisionResponse = true;\n this.skipBackfaces = false;\n this.collisionFilterMask = -1;\n this.collisionFilterGroup = -1;\n this.mode = Ray.ANY;\n this.result = new RaycastResult();\n this.hasHit = false;\n\n this.callback = result => {};\n }\n /**\n * Do itersection against all bodies in the given World.\n * @return True if the ray hit anything, otherwise false.\n */\n\n\n intersectWorld(world, options) {\n this.mode = options.mode || Ray.ANY;\n this.result = options.result || new RaycastResult();\n this.skipBackfaces = !!options.skipBackfaces;\n this.collisionFilterMask = typeof options.collisionFilterMask !== 'undefined' ? options.collisionFilterMask : -1;\n this.collisionFilterGroup = typeof options.collisionFilterGroup !== 'undefined' ? options.collisionFilterGroup : -1;\n this.checkCollisionResponse = typeof options.checkCollisionResponse !== 'undefined' ? options.checkCollisionResponse : true;\n\n if (options.from) {\n this.from.copy(options.from);\n }\n\n if (options.to) {\n this.to.copy(options.to);\n }\n\n this.callback = options.callback || (() => {});\n\n this.hasHit = false;\n this.result.reset();\n this.updateDirection();\n this.getAABB(tmpAABB$1);\n tmpArray.length = 0;\n world.broadphase.aabbQuery(world, tmpAABB$1, tmpArray);\n this.intersectBodies(tmpArray);\n return this.hasHit;\n }\n /**\n * Shoot a ray at a body, get back information about the hit.\n * @deprecated @param result set the result property of the Ray instead.\n */\n\n\n intersectBody(body, result) {\n if (result) {\n this.result = result;\n this.updateDirection();\n }\n\n const checkCollisionResponse = this.checkCollisionResponse;\n\n if (checkCollisionResponse && !body.collisionResponse) {\n return;\n }\n\n if ((this.collisionFilterGroup & body.collisionFilterMask) === 0 || (body.collisionFilterGroup & this.collisionFilterMask) === 0) {\n return;\n }\n\n const xi = intersectBody_xi;\n const qi = intersectBody_qi;\n\n for (let i = 0, N = body.shapes.length; i < N; i++) {\n const shape = body.shapes[i];\n\n if (checkCollisionResponse && !shape.collisionResponse) {\n continue; // Skip\n }\n\n body.quaternion.mult(body.shapeOrientations[i], qi);\n body.quaternion.vmult(body.shapeOffsets[i], xi);\n xi.vadd(body.position, xi);\n this.intersectShape(shape, qi, xi, body);\n\n if (this.result.shouldStop) {\n break;\n }\n }\n }\n /**\n * Shoot a ray at an array bodies, get back information about the hit.\n * @param bodies An array of Body objects.\n * @deprecated @param result set the result property of the Ray instead.\n *\n */\n\n\n intersectBodies(bodies, result) {\n if (result) {\n this.result = result;\n this.updateDirection();\n }\n\n for (let i = 0, l = bodies.length; !this.result.shouldStop && i < l; i++) {\n this.intersectBody(bodies[i]);\n }\n }\n /**\n * Updates the direction vector.\n */\n\n\n updateDirection() {\n this.to.vsub(this.from, this.direction);\n this.direction.normalize();\n }\n\n intersectShape(shape, quat, position, body) {\n const from = this.from; // Checking boundingSphere\n\n const distance = distanceFromIntersection(from, this.direction, position);\n\n if (distance > shape.boundingSphereRadius) {\n return;\n }\n\n const intersectMethod = this[shape.type];\n\n if (intersectMethod) {\n intersectMethod.call(this, shape, quat, position, body, shape);\n }\n }\n\n _intersectBox(box, quat, position, body, reportedShape) {\n return this._intersectConvex(box.convexPolyhedronRepresentation, quat, position, body, reportedShape);\n }\n\n _intersectPlane(shape, quat, position, body, reportedShape) {\n const from = this.from;\n const to = this.to;\n const direction = this.direction; // Get plane normal\n\n const worldNormal = new Vec3(0, 0, 1);\n quat.vmult(worldNormal, worldNormal);\n const len = new Vec3();\n from.vsub(position, len);\n const planeToFrom = len.dot(worldNormal);\n to.vsub(position, len);\n const planeToTo = len.dot(worldNormal);\n\n if (planeToFrom * planeToTo > 0) {\n // \"from\" and \"to\" are on the same side of the plane... bail out\n return;\n }\n\n if (from.distanceTo(to) < planeToFrom) {\n return;\n }\n\n const n_dot_dir = worldNormal.dot(direction);\n\n if (Math.abs(n_dot_dir) < this.precision) {\n // No intersection\n return;\n }\n\n const planePointToFrom = new Vec3();\n const dir_scaled_with_t = new Vec3();\n const hitPointWorld = new Vec3();\n from.vsub(position, planePointToFrom);\n const t = -worldNormal.dot(planePointToFrom) / n_dot_dir;\n direction.scale(t, dir_scaled_with_t);\n from.vadd(dir_scaled_with_t, hitPointWorld);\n this.reportIntersection(worldNormal, hitPointWorld, reportedShape, body, -1);\n }\n /**\n * Get the world AABB of the ray.\n */\n\n\n getAABB(aabb) {\n const {\n lowerBound,\n upperBound\n } = aabb;\n const to = this.to;\n const from = this.from;\n lowerBound.x = Math.min(to.x, from.x);\n lowerBound.y = Math.min(to.y, from.y);\n lowerBound.z = Math.min(to.z, from.z);\n upperBound.x = Math.max(to.x, from.x);\n upperBound.y = Math.max(to.y, from.y);\n upperBound.z = Math.max(to.z, from.z);\n }\n\n _intersectHeightfield(shape, quat, position, body, reportedShape) {\n shape.data;\n shape.elementSize; // Convert the ray to local heightfield coordinates\n\n const localRay = intersectHeightfield_localRay; //new Ray(this.from, this.to);\n\n localRay.from.copy(this.from);\n localRay.to.copy(this.to);\n Transform.pointToLocalFrame(position, quat, localRay.from, localRay.from);\n Transform.pointToLocalFrame(position, quat, localRay.to, localRay.to);\n localRay.updateDirection(); // Get the index of the data points to test against\n\n const index = intersectHeightfield_index;\n let iMinX;\n let iMinY;\n let iMaxX;\n let iMaxY; // Set to max\n\n iMinX = iMinY = 0;\n iMaxX = iMaxY = shape.data.length - 1;\n const aabb = new AABB();\n localRay.getAABB(aabb);\n shape.getIndexOfPosition(aabb.lowerBound.x, aabb.lowerBound.y, index, true);\n iMinX = Math.max(iMinX, index[0]);\n iMinY = Math.max(iMinY, index[1]);\n shape.getIndexOfPosition(aabb.upperBound.x, aabb.upperBound.y, index, true);\n iMaxX = Math.min(iMaxX, index[0] + 1);\n iMaxY = Math.min(iMaxY, index[1] + 1);\n\n for (let i = iMinX; i < iMaxX; i++) {\n for (let j = iMinY; j < iMaxY; j++) {\n if (this.result.shouldStop) {\n return;\n }\n\n shape.getAabbAtIndex(i, j, aabb);\n\n if (!aabb.overlapsRay(localRay)) {\n continue;\n } // Lower triangle\n\n\n shape.getConvexTrianglePillar(i, j, false);\n Transform.pointToWorldFrame(position, quat, shape.pillarOffset, worldPillarOffset);\n\n this._intersectConvex(shape.pillarConvex, quat, worldPillarOffset, body, reportedShape, intersectConvexOptions);\n\n if (this.result.shouldStop) {\n return;\n } // Upper triangle\n\n\n shape.getConvexTrianglePillar(i, j, true);\n Transform.pointToWorldFrame(position, quat, shape.pillarOffset, worldPillarOffset);\n\n this._intersectConvex(shape.pillarConvex, quat, worldPillarOffset, body, reportedShape, intersectConvexOptions);\n }\n }\n }\n\n _intersectSphere(sphere, quat, position, body, reportedShape) {\n const from = this.from;\n const to = this.to;\n const r = sphere.radius;\n const a = (to.x - from.x) ** 2 + (to.y - from.y) ** 2 + (to.z - from.z) ** 2;\n const b = 2 * ((to.x - from.x) * (from.x - position.x) + (to.y - from.y) * (from.y - position.y) + (to.z - from.z) * (from.z - position.z));\n const c = (from.x - position.x) ** 2 + (from.y - position.y) ** 2 + (from.z - position.z) ** 2 - r ** 2;\n const delta = b ** 2 - 4 * a * c;\n const intersectionPoint = Ray_intersectSphere_intersectionPoint;\n const normal = Ray_intersectSphere_normal;\n\n if (delta < 0) {\n // No intersection\n return;\n } else if (delta === 0) {\n // single intersection point\n from.lerp(to, delta, intersectionPoint);\n intersectionPoint.vsub(position, normal);\n normal.normalize();\n this.reportIntersection(normal, intersectionPoint, reportedShape, body, -1);\n } else {\n const d1 = (-b - Math.sqrt(delta)) / (2 * a);\n const d2 = (-b + Math.sqrt(delta)) / (2 * a);\n\n if (d1 >= 0 && d1 <= 1) {\n from.lerp(to, d1, intersectionPoint);\n intersectionPoint.vsub(position, normal);\n normal.normalize();\n this.reportIntersection(normal, intersectionPoint, reportedShape, body, -1);\n }\n\n if (this.result.shouldStop) {\n return;\n }\n\n if (d2 >= 0 && d2 <= 1) {\n from.lerp(to, d2, intersectionPoint);\n intersectionPoint.vsub(position, normal);\n normal.normalize();\n this.reportIntersection(normal, intersectionPoint, reportedShape, body, -1);\n }\n }\n }\n\n _intersectConvex(shape, quat, position, body, reportedShape, options) {\n const normal = intersectConvex_normal;\n const vector = intersectConvex_vector;\n const faceList = options && options.faceList || null; // Checking faces\n\n const faces = shape.faces;\n const vertices = shape.vertices;\n const normals = shape.faceNormals;\n const direction = this.direction;\n const from = this.from;\n const to = this.to;\n const fromToDistance = from.distanceTo(to);\n const Nfaces = faceList ? faceList.length : faces.length;\n const result = this.result;\n\n for (let j = 0; !result.shouldStop && j < Nfaces; j++) {\n const fi = faceList ? faceList[j] : j;\n const face = faces[fi];\n const faceNormal = normals[fi];\n const q = quat;\n const x = position; // determine if ray intersects the plane of the face\n // note: this works regardless of the direction of the face normal\n // Get plane point in world coordinates...\n\n vector.copy(vertices[face[0]]);\n q.vmult(vector, vector);\n vector.vadd(x, vector); // ...but make it relative to the ray from. We'll fix this later.\n\n vector.vsub(from, vector); // Get plane normal\n\n q.vmult(faceNormal, normal); // If this dot product is negative, we have something interesting\n\n const dot = direction.dot(normal); // Bail out if ray and plane are parallel\n\n if (Math.abs(dot) < this.precision) {\n continue;\n } // calc distance to plane\n\n\n const scalar = normal.dot(vector) / dot; // if negative distance, then plane is behind ray\n\n if (scalar < 0) {\n continue;\n } // if (dot < 0) {\n // Intersection point is from + direction * scalar\n\n\n direction.scale(scalar, intersectPoint);\n intersectPoint.vadd(from, intersectPoint); // a is the point we compare points b and c with.\n\n a.copy(vertices[face[0]]);\n q.vmult(a, a);\n x.vadd(a, a);\n\n for (let i = 1; !result.shouldStop && i < face.length - 1; i++) {\n // Transform 3 vertices to world coords\n b.copy(vertices[face[i]]);\n c.copy(vertices[face[i + 1]]);\n q.vmult(b, b);\n q.vmult(c, c);\n x.vadd(b, b);\n x.vadd(c, c);\n const distance = intersectPoint.distanceTo(from);\n\n if (!(Ray.pointInTriangle(intersectPoint, a, b, c) || Ray.pointInTriangle(intersectPoint, b, a, c)) || distance > fromToDistance) {\n continue;\n }\n\n this.reportIntersection(normal, intersectPoint, reportedShape, body, fi);\n } // }\n\n }\n }\n /**\n * @todo Optimize by transforming the world to local space first.\n * @todo Use Octree lookup\n */\n\n\n _intersectTrimesh(mesh, quat, position, body, reportedShape, options) {\n const normal = intersectTrimesh_normal;\n const triangles = intersectTrimesh_triangles;\n const treeTransform = intersectTrimesh_treeTransform;\n const vector = intersectConvex_vector;\n const localDirection = intersectTrimesh_localDirection;\n const localFrom = intersectTrimesh_localFrom;\n const localTo = intersectTrimesh_localTo;\n const worldIntersectPoint = intersectTrimesh_worldIntersectPoint;\n const worldNormal = intersectTrimesh_worldNormal; // Checking faces\n\n const indices = mesh.indices;\n mesh.vertices; // const normals = mesh.faceNormals\n\n const from = this.from;\n const to = this.to;\n const direction = this.direction;\n treeTransform.position.copy(position);\n treeTransform.quaternion.copy(quat); // Transform ray to local space!\n\n Transform.vectorToLocalFrame(position, quat, direction, localDirection);\n Transform.pointToLocalFrame(position, quat, from, localFrom);\n Transform.pointToLocalFrame(position, quat, to, localTo);\n localTo.x *= mesh.scale.x;\n localTo.y *= mesh.scale.y;\n localTo.z *= mesh.scale.z;\n localFrom.x *= mesh.scale.x;\n localFrom.y *= mesh.scale.y;\n localFrom.z *= mesh.scale.z;\n localTo.vsub(localFrom, localDirection);\n localDirection.normalize();\n const fromToDistanceSquared = localFrom.distanceSquared(localTo);\n mesh.tree.rayQuery(this, treeTransform, triangles);\n\n for (let i = 0, N = triangles.length; !this.result.shouldStop && i !== N; i++) {\n const trianglesIndex = triangles[i];\n mesh.getNormal(trianglesIndex, normal); // determine if ray intersects the plane of the face\n // note: this works regardless of the direction of the face normal\n // Get plane point in world coordinates...\n\n mesh.getVertex(indices[trianglesIndex * 3], a); // ...but make it relative to the ray from. We'll fix this later.\n\n a.vsub(localFrom, vector); // If this dot product is negative, we have something interesting\n\n const dot = localDirection.dot(normal); // Bail out if ray and plane are parallel\n // if (Math.abs( dot ) < this.precision){\n // continue;\n // }\n // calc distance to plane\n\n const scalar = normal.dot(vector) / dot; // if negative distance, then plane is behind ray\n\n if (scalar < 0) {\n continue;\n } // Intersection point is from + direction * scalar\n\n\n localDirection.scale(scalar, intersectPoint);\n intersectPoint.vadd(localFrom, intersectPoint); // Get triangle vertices\n\n mesh.getVertex(indices[trianglesIndex * 3 + 1], b);\n mesh.getVertex(indices[trianglesIndex * 3 + 2], c);\n const squaredDistance = intersectPoint.distanceSquared(localFrom);\n\n if (!(Ray.pointInTriangle(intersectPoint, b, a, c) || Ray.pointInTriangle(intersectPoint, a, b, c)) || squaredDistance > fromToDistanceSquared) {\n continue;\n } // transform intersectpoint and normal to world\n\n\n Transform.vectorToWorldFrame(quat, normal, worldNormal);\n Transform.pointToWorldFrame(position, quat, intersectPoint, worldIntersectPoint);\n this.reportIntersection(worldNormal, worldIntersectPoint, reportedShape, body, trianglesIndex);\n }\n\n triangles.length = 0;\n }\n /**\n * @return True if the intersections should continue\n */\n\n\n reportIntersection(normal, hitPointWorld, shape, body, hitFaceIndex) {\n const from = this.from;\n const to = this.to;\n const distance = from.distanceTo(hitPointWorld);\n const result = this.result; // Skip back faces?\n\n if (this.skipBackfaces && normal.dot(this.direction) > 0) {\n return;\n }\n\n result.hitFaceIndex = typeof hitFaceIndex !== 'undefined' ? hitFaceIndex : -1;\n\n switch (this.mode) {\n case Ray.ALL:\n this.hasHit = true;\n result.set(from, to, normal, hitPointWorld, shape, body, distance);\n result.hasHit = true;\n this.callback(result);\n break;\n\n case Ray.CLOSEST:\n // Store if closer than current closest\n if (distance < result.distance || !result.hasHit) {\n this.hasHit = true;\n result.hasHit = true;\n result.set(from, to, normal, hitPointWorld, shape, body, distance);\n }\n\n break;\n\n case Ray.ANY:\n // Report and stop.\n this.hasHit = true;\n result.hasHit = true;\n result.set(from, to, normal, hitPointWorld, shape, body, distance);\n result.shouldStop = true;\n break;\n }\n }\n /**\n * As per \"Barycentric Technique\" as named\n * {@link https://www.blackpawn.com/texts/pointinpoly/default.html here} but without the division\n */\n\n\n static pointInTriangle(p, a, b, c) {\n c.vsub(a, v0);\n b.vsub(a, v1);\n p.vsub(a, v2);\n const dot00 = v0.dot(v0);\n const dot01 = v0.dot(v1);\n const dot02 = v0.dot(v2);\n const dot11 = v1.dot(v1);\n const dot12 = v1.dot(v2);\n let u;\n let v;\n return (u = dot11 * dot02 - dot01 * dot12) >= 0 && (v = dot00 * dot12 - dot01 * dot02) >= 0 && u + v < dot00 * dot11 - dot01 * dot01;\n }\n\n}\nRay.CLOSEST = RAY_MODES.CLOSEST;\nRay.ANY = RAY_MODES.ANY;\nRay.ALL = RAY_MODES.ALL;\nconst tmpAABB$1 = new AABB();\nconst tmpArray = [];\nconst v1 = new Vec3();\nconst v2 = new Vec3();\nconst intersectBody_xi = new Vec3();\nconst intersectBody_qi = new Quaternion();\nconst intersectPoint = new Vec3();\nconst a = new Vec3();\nconst b = new Vec3();\nconst c = new Vec3();\nconst intersectConvexOptions = {\n faceList: [0]\n};\nconst worldPillarOffset = new Vec3();\nconst intersectHeightfield_localRay = new Ray();\nconst intersectHeightfield_index = [];\nconst Ray_intersectSphere_intersectionPoint = new Vec3();\nconst Ray_intersectSphere_normal = new Vec3();\nconst intersectConvex_normal = new Vec3();\nconst intersectConvex_vector = new Vec3();\nconst intersectTrimesh_normal = new Vec3();\nconst intersectTrimesh_localDirection = new Vec3();\nconst intersectTrimesh_localFrom = new Vec3();\nconst intersectTrimesh_localTo = new Vec3();\nconst intersectTrimesh_worldNormal = new Vec3();\nconst intersectTrimesh_worldIntersectPoint = new Vec3();\nnew AABB();\nconst intersectTrimesh_triangles = [];\nconst intersectTrimesh_treeTransform = new Transform();\nconst v0 = new Vec3();\nconst intersect = new Vec3();\n\nfunction distanceFromIntersection(from, direction, position) {\n // v0 is vector from from to position\n position.vsub(from, v0);\n const dot = v0.dot(direction); // intersect = direction*dot + from\n\n direction.scale(dot, intersect);\n intersect.vadd(from, intersect);\n const distance = position.distanceTo(intersect);\n return distance;\n}\n\n/**\n * Sweep and prune broadphase along one axis.\n */\nclass SAPBroadphase extends Broadphase {\n /**\n * List of bodies currently in the broadphase.\n */\n\n /**\n * The world to search in.\n */\n\n /**\n * Axis to sort the bodies along.\n * Set to 0 for x axis, and 1 for y axis.\n * For best performance, pick the axis where bodies are most distributed.\n */\n\n /**\n * Check if the bounds of two bodies overlap, along the given SAP axis.\n */\n static checkBounds(bi, bj, axisIndex) {\n let biPos;\n let bjPos;\n\n if (axisIndex === 0) {\n biPos = bi.position.x;\n bjPos = bj.position.x;\n } else if (axisIndex === 1) {\n biPos = bi.position.y;\n bjPos = bj.position.y;\n } else if (axisIndex === 2) {\n biPos = bi.position.z;\n bjPos = bj.position.z;\n }\n\n const ri = bi.boundingRadius,\n rj = bj.boundingRadius,\n boundA2 = biPos + ri,\n boundB1 = bjPos - rj;\n return boundB1 < boundA2;\n } // Note: these are identical, save for x/y/z lowerbound\n\n /**\n * insertionSortX\n */\n\n\n static insertionSortX(a) {\n for (let i = 1, l = a.length; i < l; i++) {\n const v = a[i];\n let j;\n\n for (j = i - 1; j >= 0; j--) {\n if (a[j].aabb.lowerBound.x <= v.aabb.lowerBound.x) {\n break;\n }\n\n a[j + 1] = a[j];\n }\n\n a[j + 1] = v;\n }\n\n return a;\n }\n /**\n * insertionSortY\n */\n\n\n static insertionSortY(a) {\n for (let i = 1, l = a.length; i < l; i++) {\n const v = a[i];\n let j;\n\n for (j = i - 1; j >= 0; j--) {\n if (a[j].aabb.lowerBound.y <= v.aabb.lowerBound.y) {\n break;\n }\n\n a[j + 1] = a[j];\n }\n\n a[j + 1] = v;\n }\n\n return a;\n }\n /**\n * insertionSortZ\n */\n\n\n static insertionSortZ(a) {\n for (let i = 1, l = a.length; i < l; i++) {\n const v = a[i];\n let j;\n\n for (j = i - 1; j >= 0; j--) {\n if (a[j].aabb.lowerBound.z <= v.aabb.lowerBound.z) {\n break;\n }\n\n a[j + 1] = a[j];\n }\n\n a[j + 1] = v;\n }\n\n return a;\n }\n\n constructor(world) {\n super();\n this.axisList = void 0;\n this.world = void 0;\n this.axisIndex = void 0;\n this._addBodyHandler = void 0;\n this._removeBodyHandler = void 0;\n this.axisList = [];\n this.world = null;\n this.axisIndex = 0;\n const axisList = this.axisList;\n\n this._addBodyHandler = event => {\n axisList.push(event.body);\n };\n\n this._removeBodyHandler = event => {\n const idx = axisList.indexOf(event.body);\n\n if (idx !== -1) {\n axisList.splice(idx, 1);\n }\n };\n\n if (world) {\n this.setWorld(world);\n }\n }\n /**\n * Change the world\n */\n\n\n setWorld(world) {\n // Clear the old axis array\n this.axisList.length = 0; // Add all bodies from the new world\n\n for (let i = 0; i < world.bodies.length; i++) {\n this.axisList.push(world.bodies[i]);\n } // Remove old handlers, if any\n\n\n world.removeEventListener('addBody', this._addBodyHandler);\n world.removeEventListener('removeBody', this._removeBodyHandler); // Add handlers to update the list of bodies.\n\n world.addEventListener('addBody', this._addBodyHandler);\n world.addEventListener('removeBody', this._removeBodyHandler);\n this.world = world;\n this.dirty = true;\n }\n /**\n * Collect all collision pairs\n */\n\n\n collisionPairs(world, p1, p2) {\n const bodies = this.axisList;\n const N = bodies.length;\n const axisIndex = this.axisIndex;\n let i;\n let j;\n\n if (this.dirty) {\n this.sortList();\n this.dirty = false;\n } // Look through the list\n\n\n for (i = 0; i !== N; i++) {\n const bi = bodies[i];\n\n for (j = i + 1; j < N; j++) {\n const bj = bodies[j];\n\n if (!this.needBroadphaseCollision(bi, bj)) {\n continue;\n }\n\n if (!SAPBroadphase.checkBounds(bi, bj, axisIndex)) {\n break;\n }\n\n this.intersectionTest(bi, bj, p1, p2);\n }\n }\n }\n\n sortList() {\n const axisList = this.axisList;\n const axisIndex = this.axisIndex;\n const N = axisList.length; // Update AABBs\n\n for (let i = 0; i !== N; i++) {\n const bi = axisList[i];\n\n if (bi.aabbNeedsUpdate) {\n bi.updateAABB();\n }\n } // Sort the list\n\n\n if (axisIndex === 0) {\n SAPBroadphase.insertionSortX(axisList);\n } else if (axisIndex === 1) {\n SAPBroadphase.insertionSortY(axisList);\n } else if (axisIndex === 2) {\n SAPBroadphase.insertionSortZ(axisList);\n }\n }\n /**\n * Computes the variance of the body positions and estimates the best axis to use.\n * Will automatically set property `axisIndex`.\n */\n\n\n autoDetectAxis() {\n let sumX = 0;\n let sumX2 = 0;\n let sumY = 0;\n let sumY2 = 0;\n let sumZ = 0;\n let sumZ2 = 0;\n const bodies = this.axisList;\n const N = bodies.length;\n const invN = 1 / N;\n\n for (let i = 0; i !== N; i++) {\n const b = bodies[i];\n const centerX = b.position.x;\n sumX += centerX;\n sumX2 += centerX * centerX;\n const centerY = b.position.y;\n sumY += centerY;\n sumY2 += centerY * centerY;\n const centerZ = b.position.z;\n sumZ += centerZ;\n sumZ2 += centerZ * centerZ;\n }\n\n const varianceX = sumX2 - sumX * sumX * invN;\n const varianceY = sumY2 - sumY * sumY * invN;\n const varianceZ = sumZ2 - sumZ * sumZ * invN;\n\n if (varianceX > varianceY) {\n if (varianceX > varianceZ) {\n this.axisIndex = 0;\n } else {\n this.axisIndex = 2;\n }\n } else if (varianceY > varianceZ) {\n this.axisIndex = 1;\n } else {\n this.axisIndex = 2;\n }\n }\n /**\n * Returns all the bodies within an AABB.\n * @param result An array to store resulting bodies in.\n */\n\n\n aabbQuery(world, aabb, result = []) {\n if (this.dirty) {\n this.sortList();\n this.dirty = false;\n }\n\n const axisIndex = this.axisIndex;\n let axis = 'x';\n\n if (axisIndex === 1) {\n axis = 'y';\n }\n\n if (axisIndex === 2) {\n axis = 'z';\n }\n\n const axisList = this.axisList;\n aabb.lowerBound[axis];\n aabb.upperBound[axis];\n\n for (let i = 0; i < axisList.length; i++) {\n const b = axisList[i];\n\n if (b.aabbNeedsUpdate) {\n b.updateAABB();\n }\n\n if (b.aabb.overlaps(aabb)) {\n result.push(b);\n }\n }\n\n return result;\n }\n\n}\n\nclass Utils {\n /**\n * Extend an options object with default values.\n * @param options The options object. May be falsy: in this case, a new object is created and returned.\n * @param defaults An object containing default values.\n * @return The modified options object.\n */\n static defaults(options = {}, defaults) {\n for (let key in defaults) {\n if (!(key in options)) {\n options[key] = defaults[key];\n }\n }\n\n return options;\n }\n\n}\n\n/**\n * Constraint base class\n */\nclass Constraint {\n /**\n * Equations to be solved in this constraint.\n */\n\n /**\n * Body A.\n */\n\n /**\n * Body B.\n */\n\n /**\n * Set to false if you don't want the bodies to collide when they are connected.\n */\n constructor(bodyA, bodyB, options = {}) {\n this.equations = void 0;\n this.bodyA = void 0;\n this.bodyB = void 0;\n this.id = void 0;\n this.collideConnected = void 0;\n options = Utils.defaults(options, {\n collideConnected: true,\n wakeUpBodies: true\n });\n this.equations = [];\n this.bodyA = bodyA;\n this.bodyB = bodyB;\n this.id = Constraint.idCounter++;\n this.collideConnected = options.collideConnected;\n\n if (options.wakeUpBodies) {\n if (bodyA) {\n bodyA.wakeUp();\n }\n\n if (bodyB) {\n bodyB.wakeUp();\n }\n }\n }\n /**\n * Update all the equations with data.\n */\n\n\n update() {\n throw new Error('method update() not implmemented in this Constraint subclass!');\n }\n /**\n * Enables all equations in the constraint.\n */\n\n\n enable() {\n const eqs = this.equations;\n\n for (let i = 0; i < eqs.length; i++) {\n eqs[i].enabled = true;\n }\n }\n /**\n * Disables all equations in the constraint.\n */\n\n\n disable() {\n const eqs = this.equations;\n\n for (let i = 0; i < eqs.length; i++) {\n eqs[i].enabled = false;\n }\n }\n\n}\nConstraint.idCounter = 0;\n\n/**\n * An element containing 6 entries, 3 spatial and 3 rotational degrees of freedom.\n */\n\nclass JacobianElement {\n /**\n * spatial\n */\n\n /**\n * rotational\n */\n constructor() {\n this.spatial = void 0;\n this.rotational = void 0;\n this.spatial = new Vec3();\n this.rotational = new Vec3();\n }\n /**\n * Multiply with other JacobianElement\n */\n\n\n multiplyElement(element) {\n return element.spatial.dot(this.spatial) + element.rotational.dot(this.rotational);\n }\n /**\n * Multiply with two vectors\n */\n\n\n multiplyVectors(spatial, rotational) {\n return spatial.dot(this.spatial) + rotational.dot(this.rotational);\n }\n\n}\n\n/**\n * Equation base class.\n *\n * `a`, `b` and `eps` are {@link https://www8.cs.umu.se/kurser/5DV058/VT15/lectures/SPOOKlabnotes.pdf SPOOK} parameters that default to `0.0`. See {@link https://github.com/schteppe/cannon.js/issues/238#issuecomment-147172327 this exchange} for more details on Cannon's physics implementation.\n */\nclass Equation {\n /**\n * Minimum (read: negative max) force to be applied by the constraint.\n */\n\n /**\n * Maximum (read: positive max) force to be applied by the constraint.\n */\n\n /**\n * SPOOK parameter\n */\n\n /**\n * SPOOK parameter\n */\n\n /**\n * SPOOK parameter\n */\n\n /**\n * A number, proportional to the force added to the bodies.\n */\n constructor(bi, bj, minForce = -1e6, maxForce = 1e6) {\n this.id = void 0;\n this.minForce = void 0;\n this.maxForce = void 0;\n this.bi = void 0;\n this.bj = void 0;\n this.si = void 0;\n this.sj = void 0;\n this.a = void 0;\n this.b = void 0;\n this.eps = void 0;\n this.jacobianElementA = void 0;\n this.jacobianElementB = void 0;\n this.enabled = void 0;\n this.multiplier = void 0;\n this.id = Equation.idCounter++;\n this.minForce = minForce;\n this.maxForce = maxForce;\n this.bi = bi;\n this.bj = bj;\n this.a = 0.0; // SPOOK parameter\n\n this.b = 0.0; // SPOOK parameter\n\n this.eps = 0.0; // SPOOK parameter\n\n this.jacobianElementA = new JacobianElement();\n this.jacobianElementB = new JacobianElement();\n this.enabled = true;\n this.multiplier = 0;\n this.setSpookParams(1e7, 4, 1 / 60); // Set typical spook params\n }\n /**\n * Recalculates a, b, and eps.\n *\n * The Equation constructor sets typical SPOOK parameters as such:\n * * `stiffness` = 1e7\n * * `relaxation` = 4\n * * `timeStep`= 1 / 60, _note the hardcoded refresh rate._\n */\n\n\n setSpookParams(stiffness, relaxation, timeStep) {\n const d = relaxation;\n const k = stiffness;\n const h = timeStep;\n this.a = 4.0 / (h * (1 + 4 * d));\n this.b = 4.0 * d / (1 + 4 * d);\n this.eps = 4.0 / (h * h * k * (1 + 4 * d));\n }\n /**\n * Computes the right hand side of the SPOOK equation\n */\n\n\n computeB(a, b, h) {\n const GW = this.computeGW();\n const Gq = this.computeGq();\n const GiMf = this.computeGiMf();\n return -Gq * a - GW * b - GiMf * h;\n }\n /**\n * Computes G*q, where q are the generalized body coordinates\n */\n\n\n computeGq() {\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n const bi = this.bi;\n const bj = this.bj;\n const xi = bi.position;\n const xj = bj.position;\n return GA.spatial.dot(xi) + GB.spatial.dot(xj);\n }\n /**\n * Computes G*W, where W are the body velocities\n */\n\n\n computeGW() {\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n const bi = this.bi;\n const bj = this.bj;\n const vi = bi.velocity;\n const vj = bj.velocity;\n const wi = bi.angularVelocity;\n const wj = bj.angularVelocity;\n return GA.multiplyVectors(vi, wi) + GB.multiplyVectors(vj, wj);\n }\n /**\n * Computes G*Wlambda, where W are the body velocities\n */\n\n\n computeGWlambda() {\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n const bi = this.bi;\n const bj = this.bj;\n const vi = bi.vlambda;\n const vj = bj.vlambda;\n const wi = bi.wlambda;\n const wj = bj.wlambda;\n return GA.multiplyVectors(vi, wi) + GB.multiplyVectors(vj, wj);\n }\n /**\n * Computes G*inv(M)*f, where M is the mass matrix with diagonal blocks for each body, and f are the forces on the bodies.\n */\n\n\n computeGiMf() {\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n const bi = this.bi;\n const bj = this.bj;\n const fi = bi.force;\n const ti = bi.torque;\n const fj = bj.force;\n const tj = bj.torque;\n const invMassi = bi.invMassSolve;\n const invMassj = bj.invMassSolve;\n fi.scale(invMassi, iMfi);\n fj.scale(invMassj, iMfj);\n bi.invInertiaWorldSolve.vmult(ti, invIi_vmult_taui);\n bj.invInertiaWorldSolve.vmult(tj, invIj_vmult_tauj);\n return GA.multiplyVectors(iMfi, invIi_vmult_taui) + GB.multiplyVectors(iMfj, invIj_vmult_tauj);\n }\n /**\n * Computes G*inv(M)*G'\n */\n\n\n computeGiMGt() {\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n const bi = this.bi;\n const bj = this.bj;\n const invMassi = bi.invMassSolve;\n const invMassj = bj.invMassSolve;\n const invIi = bi.invInertiaWorldSolve;\n const invIj = bj.invInertiaWorldSolve;\n let result = invMassi + invMassj;\n invIi.vmult(GA.rotational, tmp);\n result += tmp.dot(GA.rotational);\n invIj.vmult(GB.rotational, tmp);\n result += tmp.dot(GB.rotational);\n return result;\n }\n /**\n * Add constraint velocity to the bodies.\n */\n\n\n addToWlambda(deltalambda) {\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n const bi = this.bi;\n const bj = this.bj;\n const temp = addToWlambda_temp; // Add to linear velocity\n // v_lambda += inv(M) * delta_lamba * G\n\n bi.vlambda.addScaledVector(bi.invMassSolve * deltalambda, GA.spatial, bi.vlambda);\n bj.vlambda.addScaledVector(bj.invMassSolve * deltalambda, GB.spatial, bj.vlambda); // Add to angular velocity\n\n bi.invInertiaWorldSolve.vmult(GA.rotational, temp);\n bi.wlambda.addScaledVector(deltalambda, temp, bi.wlambda);\n bj.invInertiaWorldSolve.vmult(GB.rotational, temp);\n bj.wlambda.addScaledVector(deltalambda, temp, bj.wlambda);\n }\n /**\n * Compute the denominator part of the SPOOK equation: C = G*inv(M)*G' + eps\n */\n\n\n computeC() {\n return this.computeGiMGt() + this.eps;\n }\n\n}\nEquation.idCounter = 0;\nconst iMfi = new Vec3();\nconst iMfj = new Vec3();\nconst invIi_vmult_taui = new Vec3();\nconst invIj_vmult_tauj = new Vec3();\nconst tmp = new Vec3();\nconst addToWlambda_temp = new Vec3();\n\n/**\n * Contact/non-penetration constraint equation\n */\nclass ContactEquation extends Equation {\n /**\n * \"bounciness\": u1 = -e*u0\n */\n\n /**\n * World-oriented vector that goes from the center of bi to the contact point.\n */\n\n /**\n * World-oriented vector that starts in body j position and goes to the contact point.\n */\n\n /**\n * Contact normal, pointing out of body i.\n */\n constructor(bodyA, bodyB, maxForce = 1e6) {\n super(bodyA, bodyB, 0, maxForce);\n this.restitution = void 0;\n this.ri = void 0;\n this.rj = void 0;\n this.ni = void 0;\n this.restitution = 0.0;\n this.ri = new Vec3();\n this.rj = new Vec3();\n this.ni = new Vec3();\n }\n\n computeB(h) {\n const a = this.a;\n const b = this.b;\n const bi = this.bi;\n const bj = this.bj;\n const ri = this.ri;\n const rj = this.rj;\n const rixn = ContactEquation_computeB_temp1;\n const rjxn = ContactEquation_computeB_temp2;\n const vi = bi.velocity;\n const wi = bi.angularVelocity;\n bi.force;\n bi.torque;\n const vj = bj.velocity;\n const wj = bj.angularVelocity;\n bj.force;\n bj.torque;\n const penetrationVec = ContactEquation_computeB_temp3;\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n const n = this.ni; // Caluclate cross products\n\n ri.cross(n, rixn);\n rj.cross(n, rjxn); // g = xj+rj -(xi+ri)\n // G = [ -ni -rixn ni rjxn ]\n\n n.negate(GA.spatial);\n rixn.negate(GA.rotational);\n GB.spatial.copy(n);\n GB.rotational.copy(rjxn); // Calculate the penetration vector\n\n penetrationVec.copy(bj.position);\n penetrationVec.vadd(rj, penetrationVec);\n penetrationVec.vsub(bi.position, penetrationVec);\n penetrationVec.vsub(ri, penetrationVec);\n const g = n.dot(penetrationVec); // Compute iteration\n\n const ePlusOne = this.restitution + 1;\n const GW = ePlusOne * vj.dot(n) - ePlusOne * vi.dot(n) + wj.dot(rjxn) - wi.dot(rixn);\n const GiMf = this.computeGiMf();\n const B = -g * a - GW * b - h * GiMf;\n return B;\n }\n /**\n * Get the current relative velocity in the contact point.\n */\n\n\n getImpactVelocityAlongNormal() {\n const vi = ContactEquation_getImpactVelocityAlongNormal_vi;\n const vj = ContactEquation_getImpactVelocityAlongNormal_vj;\n const xi = ContactEquation_getImpactVelocityAlongNormal_xi;\n const xj = ContactEquation_getImpactVelocityAlongNormal_xj;\n const relVel = ContactEquation_getImpactVelocityAlongNormal_relVel;\n this.bi.position.vadd(this.ri, xi);\n this.bj.position.vadd(this.rj, xj);\n this.bi.getVelocityAtWorldPoint(xi, vi);\n this.bj.getVelocityAtWorldPoint(xj, vj);\n vi.vsub(vj, relVel);\n return this.ni.dot(relVel);\n }\n\n}\nconst ContactEquation_computeB_temp1 = new Vec3(); // Temp vectors\n\nconst ContactEquation_computeB_temp2 = new Vec3();\nconst ContactEquation_computeB_temp3 = new Vec3();\nconst ContactEquation_getImpactVelocityAlongNormal_vi = new Vec3();\nconst ContactEquation_getImpactVelocityAlongNormal_vj = new Vec3();\nconst ContactEquation_getImpactVelocityAlongNormal_xi = new Vec3();\nconst ContactEquation_getImpactVelocityAlongNormal_xj = new Vec3();\nconst ContactEquation_getImpactVelocityAlongNormal_relVel = new Vec3();\n\n/**\n * Connects two bodies at given offset points.\n * @example\n * const bodyA = new Body({ mass: 1 })\n * const bodyB = new Body({ mass: 1 })\n * bodyA.position.set(-1, 0, 0)\n * bodyB.position.set(1, 0, 0)\n * bodyA.addShape(shapeA)\n * bodyB.addShape(shapeB)\n * world.addBody(bodyA)\n * world.addBody(bodyB)\n * const localPivotA = new Vec3(1, 0, 0)\n * const localPivotB = new Vec3(-1, 0, 0)\n * const constraint = new PointToPointConstraint(bodyA, localPivotA, bodyB, localPivotB)\n * world.addConstraint(constraint)\n */\nclass PointToPointConstraint extends Constraint {\n /**\n * Pivot, defined locally in bodyA.\n */\n\n /**\n * Pivot, defined locally in bodyB.\n */\n\n /**\n * @param pivotA The point relative to the center of mass of bodyA which bodyA is constrained to.\n * @param bodyB Body that will be constrained in a similar way to the same point as bodyA. We will therefore get a link between bodyA and bodyB. If not specified, bodyA will be constrained to a static point.\n * @param pivotB The point relative to the center of mass of bodyB which bodyB is constrained to.\n * @param maxForce The maximum force that should be applied to constrain the bodies.\n */\n constructor(bodyA, pivotA = new Vec3(), bodyB, pivotB = new Vec3(), maxForce = 1e6) {\n super(bodyA, bodyB);\n this.pivotA = void 0;\n this.pivotB = void 0;\n this.equationX = void 0;\n this.equationY = void 0;\n this.equationZ = void 0;\n this.pivotA = pivotA.clone();\n this.pivotB = pivotB.clone();\n const x = this.equationX = new ContactEquation(bodyA, bodyB);\n const y = this.equationY = new ContactEquation(bodyA, bodyB);\n const z = this.equationZ = new ContactEquation(bodyA, bodyB); // Equations to be fed to the solver\n\n this.equations.push(x, y, z); // Make the equations bidirectional\n\n x.minForce = y.minForce = z.minForce = -maxForce;\n x.maxForce = y.maxForce = z.maxForce = maxForce;\n x.ni.set(1, 0, 0);\n y.ni.set(0, 1, 0);\n z.ni.set(0, 0, 1);\n }\n\n update() {\n const bodyA = this.bodyA;\n const bodyB = this.bodyB;\n const x = this.equationX;\n const y = this.equationY;\n const z = this.equationZ; // Rotate the pivots to world space\n\n bodyA.quaternion.vmult(this.pivotA, x.ri);\n bodyB.quaternion.vmult(this.pivotB, x.rj);\n y.ri.copy(x.ri);\n y.rj.copy(x.rj);\n z.ri.copy(x.ri);\n z.rj.copy(x.rj);\n }\n\n}\n\n/**\n * Cone equation. Works to keep the given body world vectors aligned, or tilted within a given angle from each other.\n */\nclass ConeEquation extends Equation {\n /**\n * Local axis in A\n */\n\n /**\n * Local axis in B\n */\n\n /**\n * The \"cone angle\" to keep\n */\n constructor(bodyA, bodyB, options = {}) {\n const maxForce = typeof options.maxForce !== 'undefined' ? options.maxForce : 1e6;\n super(bodyA, bodyB, -maxForce, maxForce);\n this.axisA = void 0;\n this.axisB = void 0;\n this.angle = void 0;\n this.axisA = options.axisA ? options.axisA.clone() : new Vec3(1, 0, 0);\n this.axisB = options.axisB ? options.axisB.clone() : new Vec3(0, 1, 0);\n this.angle = typeof options.angle !== 'undefined' ? options.angle : 0;\n }\n\n computeB(h) {\n const a = this.a;\n const b = this.b;\n const ni = this.axisA;\n const nj = this.axisB;\n const nixnj = tmpVec1$2;\n const njxni = tmpVec2$2;\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB; // Caluclate cross products\n\n ni.cross(nj, nixnj);\n nj.cross(ni, njxni); // The angle between two vector is:\n // cos(theta) = a * b / (length(a) * length(b) = { len(a) = len(b) = 1 } = a * b\n // g = a * b\n // gdot = (b x a) * wi + (a x b) * wj\n // G = [0 bxa 0 axb]\n // W = [vi wi vj wj]\n\n GA.rotational.copy(njxni);\n GB.rotational.copy(nixnj);\n const g = Math.cos(this.angle) - ni.dot(nj);\n const GW = this.computeGW();\n const GiMf = this.computeGiMf();\n const B = -g * a - GW * b - h * GiMf;\n return B;\n }\n\n}\nconst tmpVec1$2 = new Vec3();\nconst tmpVec2$2 = new Vec3();\n\n/**\n * Rotational constraint. Works to keep the local vectors orthogonal to each other in world space.\n */\nclass RotationalEquation extends Equation {\n /**\n * World oriented rotational axis.\n */\n\n /**\n * World oriented rotational axis.\n */\n\n /**\n * maxAngle\n */\n constructor(bodyA, bodyB, options = {}) {\n const maxForce = typeof options.maxForce !== 'undefined' ? options.maxForce : 1e6;\n super(bodyA, bodyB, -maxForce, maxForce);\n this.axisA = void 0;\n this.axisB = void 0;\n this.maxAngle = void 0;\n this.axisA = options.axisA ? options.axisA.clone() : new Vec3(1, 0, 0);\n this.axisB = options.axisB ? options.axisB.clone() : new Vec3(0, 1, 0);\n this.maxAngle = Math.PI / 2;\n }\n\n computeB(h) {\n const a = this.a;\n const b = this.b;\n const ni = this.axisA;\n const nj = this.axisB;\n const nixnj = tmpVec1$1;\n const njxni = tmpVec2$1;\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB; // Caluclate cross products\n\n ni.cross(nj, nixnj);\n nj.cross(ni, njxni); // g = ni * nj\n // gdot = (nj x ni) * wi + (ni x nj) * wj\n // G = [0 njxni 0 nixnj]\n // W = [vi wi vj wj]\n\n GA.rotational.copy(njxni);\n GB.rotational.copy(nixnj);\n const g = Math.cos(this.maxAngle) - ni.dot(nj);\n const GW = this.computeGW();\n const GiMf = this.computeGiMf();\n const B = -g * a - GW * b - h * GiMf;\n return B;\n }\n\n}\nconst tmpVec1$1 = new Vec3();\nconst tmpVec2$1 = new Vec3();\n\n/**\n * A Cone Twist constraint, useful for ragdolls.\n */\nclass ConeTwistConstraint extends PointToPointConstraint {\n /**\n * The axis direction for the constraint of the body A.\n */\n\n /**\n * The axis direction for the constraint of the body B.\n */\n\n /**\n * The aperture angle of the cone.\n */\n\n /**\n * The twist angle of the joint.\n */\n constructor(bodyA, bodyB, options = {}) {\n const maxForce = typeof options.maxForce !== 'undefined' ? options.maxForce : 1e6; // Set pivot point in between\n\n const pivotA = options.pivotA ? options.pivotA.clone() : new Vec3();\n const pivotB = options.pivotB ? options.pivotB.clone() : new Vec3();\n super(bodyA, pivotA, bodyB, pivotB, maxForce);\n this.axisA = void 0;\n this.axisB = void 0;\n this.angle = void 0;\n this.twistAngle = void 0;\n this.coneEquation = void 0;\n this.twistEquation = void 0;\n this.axisA = options.axisA ? options.axisA.clone() : new Vec3();\n this.axisB = options.axisB ? options.axisB.clone() : new Vec3();\n this.collideConnected = !!options.collideConnected;\n this.angle = typeof options.angle !== 'undefined' ? options.angle : 0;\n const c = this.coneEquation = new ConeEquation(bodyA, bodyB, options);\n const t = this.twistEquation = new RotationalEquation(bodyA, bodyB, options);\n this.twistAngle = typeof options.twistAngle !== 'undefined' ? options.twistAngle : 0; // Make the cone equation push the bodies toward the cone axis, not outward\n\n c.maxForce = 0;\n c.minForce = -maxForce; // Make the twist equation add torque toward the initial position\n\n t.maxForce = 0;\n t.minForce = -maxForce;\n this.equations.push(c, t);\n }\n\n update() {\n const bodyA = this.bodyA;\n const bodyB = this.bodyB;\n const cone = this.coneEquation;\n const twist = this.twistEquation;\n super.update(); // Update the axes to the cone constraint\n\n bodyA.vectorToWorldFrame(this.axisA, cone.axisA);\n bodyB.vectorToWorldFrame(this.axisB, cone.axisB); // Update the world axes in the twist constraint\n\n this.axisA.tangents(twist.axisA, twist.axisA);\n bodyA.vectorToWorldFrame(twist.axisA, twist.axisA);\n this.axisB.tangents(twist.axisB, twist.axisB);\n bodyB.vectorToWorldFrame(twist.axisB, twist.axisB);\n cone.angle = this.angle;\n twist.maxAngle = this.twistAngle;\n }\n\n}\n\n/**\n * Constrains two bodies to be at a constant distance from each others center of mass.\n */\nclass DistanceConstraint extends Constraint {\n /**\n * The distance to keep. If undefined, it will be set to the current distance between bodyA and bodyB\n */\n\n /**\n * @param distance The distance to keep. If undefined, it will be set to the current distance between bodyA and bodyB.\n * @param maxForce The maximum force that should be applied to constrain the bodies.\n */\n constructor(bodyA, bodyB, distance, maxForce = 1e6) {\n super(bodyA, bodyB);\n this.distance = void 0;\n this.distanceEquation = void 0;\n\n if (typeof distance === 'undefined') {\n distance = bodyA.position.distanceTo(bodyB.position);\n }\n\n this.distance = distance;\n const eq = this.distanceEquation = new ContactEquation(bodyA, bodyB);\n this.equations.push(eq); // Make it bidirectional\n\n eq.minForce = -maxForce;\n eq.maxForce = maxForce;\n }\n /**\n * update\n */\n\n\n update() {\n const bodyA = this.bodyA;\n const bodyB = this.bodyB;\n const eq = this.distanceEquation;\n const halfDist = this.distance * 0.5;\n const normal = eq.ni;\n bodyB.position.vsub(bodyA.position, normal);\n normal.normalize();\n normal.scale(halfDist, eq.ri);\n normal.scale(-halfDist, eq.rj);\n }\n\n}\n\n/**\n * Lock constraint. Will remove all degrees of freedom between the bodies.\n */\nclass LockConstraint extends PointToPointConstraint {\n constructor(bodyA, bodyB, options = {}) {\n const maxForce = typeof options.maxForce !== 'undefined' ? options.maxForce : 1e6; // Set pivot point in between\n\n const pivotA = new Vec3();\n const pivotB = new Vec3();\n const halfWay = new Vec3();\n bodyA.position.vadd(bodyB.position, halfWay);\n halfWay.scale(0.5, halfWay);\n bodyB.pointToLocalFrame(halfWay, pivotB);\n bodyA.pointToLocalFrame(halfWay, pivotA); // The point-to-point constraint will keep a point shared between the bodies\n\n super(bodyA, pivotA, bodyB, pivotB, maxForce); // Store initial rotation of the bodies as unit vectors in the local body spaces\n\n this.xA = void 0;\n this.xB = void 0;\n this.yA = void 0;\n this.yB = void 0;\n this.zA = void 0;\n this.zB = void 0;\n this.rotationalEquation1 = void 0;\n this.rotationalEquation2 = void 0;\n this.rotationalEquation3 = void 0;\n this.motorEquation = void 0;\n this.xA = bodyA.vectorToLocalFrame(Vec3.UNIT_X);\n this.xB = bodyB.vectorToLocalFrame(Vec3.UNIT_X);\n this.yA = bodyA.vectorToLocalFrame(Vec3.UNIT_Y);\n this.yB = bodyB.vectorToLocalFrame(Vec3.UNIT_Y);\n this.zA = bodyA.vectorToLocalFrame(Vec3.UNIT_Z);\n this.zB = bodyB.vectorToLocalFrame(Vec3.UNIT_Z); // ...and the following rotational equations will keep all rotational DOF's in place\n\n const r1 = this.rotationalEquation1 = new RotationalEquation(bodyA, bodyB, options);\n const r2 = this.rotationalEquation2 = new RotationalEquation(bodyA, bodyB, options);\n const r3 = this.rotationalEquation3 = new RotationalEquation(bodyA, bodyB, options);\n this.equations.push(r1, r2, r3);\n }\n /**\n * update\n */\n\n\n update() {\n const bodyA = this.bodyA;\n const bodyB = this.bodyB;\n this.motorEquation;\n const r1 = this.rotationalEquation1;\n const r2 = this.rotationalEquation2;\n const r3 = this.rotationalEquation3;\n super.update(); // These vector pairs must be orthogonal\n\n bodyA.vectorToWorldFrame(this.xA, r1.axisA);\n bodyB.vectorToWorldFrame(this.yB, r1.axisB);\n bodyA.vectorToWorldFrame(this.yA, r2.axisA);\n bodyB.vectorToWorldFrame(this.zB, r2.axisB);\n bodyA.vectorToWorldFrame(this.zA, r3.axisA);\n bodyB.vectorToWorldFrame(this.xB, r3.axisB);\n }\n\n}\n\n/**\n * Rotational motor constraint. Tries to keep the relative angular velocity of the bodies to a given value.\n */\nclass RotationalMotorEquation extends Equation {\n /**\n * World oriented rotational axis.\n */\n\n /**\n * World oriented rotational axis.\n */\n\n /**\n * Motor velocity.\n */\n constructor(bodyA, bodyB, maxForce = 1e6) {\n super(bodyA, bodyB, -maxForce, maxForce);\n this.axisA = void 0;\n this.axisB = void 0;\n this.targetVelocity = void 0;\n this.axisA = new Vec3();\n this.axisB = new Vec3();\n this.targetVelocity = 0;\n }\n\n computeB(h) {\n this.a;\n const b = this.b;\n this.bi;\n this.bj;\n const axisA = this.axisA;\n const axisB = this.axisB;\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB; // g = 0\n // gdot = axisA * wi - axisB * wj\n // gdot = G * W = G * [vi wi vj wj]\n // =>\n // G = [0 axisA 0 -axisB]\n\n GA.rotational.copy(axisA);\n axisB.negate(GB.rotational);\n const GW = this.computeGW() - this.targetVelocity;\n const GiMf = this.computeGiMf();\n const B = -GW * b - h * GiMf;\n return B;\n }\n\n}\n\n/**\n * Hinge constraint. Think of it as a door hinge. It tries to keep the door in the correct place and with the correct orientation.\n */\nclass HingeConstraint extends PointToPointConstraint {\n /**\n * Rotation axis, defined locally in bodyA.\n */\n\n /**\n * Rotation axis, defined locally in bodyB.\n */\n constructor(bodyA, bodyB, options = {}) {\n const maxForce = typeof options.maxForce !== 'undefined' ? options.maxForce : 1e6;\n const pivotA = options.pivotA ? options.pivotA.clone() : new Vec3();\n const pivotB = options.pivotB ? options.pivotB.clone() : new Vec3();\n super(bodyA, pivotA, bodyB, pivotB, maxForce);\n this.axisA = void 0;\n this.axisB = void 0;\n this.rotationalEquation1 = void 0;\n this.rotationalEquation2 = void 0;\n this.motorEquation = void 0;\n const axisA = this.axisA = options.axisA ? options.axisA.clone() : new Vec3(1, 0, 0);\n axisA.normalize();\n const axisB = this.axisB = options.axisB ? options.axisB.clone() : new Vec3(1, 0, 0);\n axisB.normalize();\n this.collideConnected = !!options.collideConnected;\n const rotational1 = this.rotationalEquation1 = new RotationalEquation(bodyA, bodyB, options);\n const rotational2 = this.rotationalEquation2 = new RotationalEquation(bodyA, bodyB, options);\n const motor = this.motorEquation = new RotationalMotorEquation(bodyA, bodyB, maxForce);\n motor.enabled = false; // Not enabled by default\n // Equations to be fed to the solver\n\n this.equations.push(rotational1, rotational2, motor);\n }\n /**\n * enableMotor\n */\n\n\n enableMotor() {\n this.motorEquation.enabled = true;\n }\n /**\n * disableMotor\n */\n\n\n disableMotor() {\n this.motorEquation.enabled = false;\n }\n /**\n * setMotorSpeed\n */\n\n\n setMotorSpeed(speed) {\n this.motorEquation.targetVelocity = speed;\n }\n /**\n * setMotorMaxForce\n */\n\n\n setMotorMaxForce(maxForce) {\n this.motorEquation.maxForce = maxForce;\n this.motorEquation.minForce = -maxForce;\n }\n /**\n * update\n */\n\n\n update() {\n const bodyA = this.bodyA;\n const bodyB = this.bodyB;\n const motor = this.motorEquation;\n const r1 = this.rotationalEquation1;\n const r2 = this.rotationalEquation2;\n const worldAxisA = HingeConstraint_update_tmpVec1;\n const worldAxisB = HingeConstraint_update_tmpVec2;\n const axisA = this.axisA;\n const axisB = this.axisB;\n super.update(); // Get world axes\n\n bodyA.quaternion.vmult(axisA, worldAxisA);\n bodyB.quaternion.vmult(axisB, worldAxisB);\n worldAxisA.tangents(r1.axisA, r2.axisA);\n r1.axisB.copy(worldAxisB);\n r2.axisB.copy(worldAxisB);\n\n if (this.motorEquation.enabled) {\n bodyA.quaternion.vmult(this.axisA, motor.axisA);\n bodyB.quaternion.vmult(this.axisB, motor.axisB);\n }\n }\n\n}\nconst HingeConstraint_update_tmpVec1 = new Vec3();\nconst HingeConstraint_update_tmpVec2 = new Vec3();\n\n/**\n * Constrains the slipping in a contact along a tangent\n */\nclass FrictionEquation extends Equation {\n // Tangent\n\n /**\n * @param slipForce should be +-F_friction = +-mu * F_normal = +-mu * m * g\n */\n constructor(bodyA, bodyB, slipForce) {\n super(bodyA, bodyB, -slipForce, slipForce);\n this.ri = void 0;\n this.rj = void 0;\n this.t = void 0;\n this.ri = new Vec3();\n this.rj = new Vec3();\n this.t = new Vec3();\n }\n\n computeB(h) {\n this.a;\n const b = this.b;\n this.bi;\n this.bj;\n const ri = this.ri;\n const rj = this.rj;\n const rixt = FrictionEquation_computeB_temp1;\n const rjxt = FrictionEquation_computeB_temp2;\n const t = this.t; // Caluclate cross products\n\n ri.cross(t, rixt);\n rj.cross(t, rjxt); // G = [-t -rixt t rjxt]\n // And remember, this is a pure velocity constraint, g is always zero!\n\n const GA = this.jacobianElementA;\n const GB = this.jacobianElementB;\n t.negate(GA.spatial);\n rixt.negate(GA.rotational);\n GB.spatial.copy(t);\n GB.rotational.copy(rjxt);\n const GW = this.computeGW();\n const GiMf = this.computeGiMf();\n const B = -GW * b - h * GiMf;\n return B;\n }\n\n}\nconst FrictionEquation_computeB_temp1 = new Vec3();\nconst FrictionEquation_computeB_temp2 = new Vec3();\n\n/**\n * Defines what happens when two materials meet.\n * @todo Refactor materials to materialA and materialB\n */\nclass ContactMaterial {\n /**\n * Identifier of this material.\n */\n\n /**\n * Participating materials.\n */\n\n /**\n * Friction coefficient.\n * @default 0.3\n */\n\n /**\n * Restitution coefficient.\n * @default 0.3\n */\n\n /**\n * Stiffness of the produced contact equations.\n * @default 1e7\n */\n\n /**\n * Relaxation time of the produced contact equations.\n * @default 3\n */\n\n /**\n * Stiffness of the produced friction equations.\n * @default 1e7\n */\n\n /**\n * Relaxation time of the produced friction equations\n * @default 3\n */\n constructor(m1, m2, options) {\n this.id = void 0;\n this.materials = void 0;\n this.friction = void 0;\n this.restitution = void 0;\n this.contactEquationStiffness = void 0;\n this.contactEquationRelaxation = void 0;\n this.frictionEquationStiffness = void 0;\n this.frictionEquationRelaxation = void 0;\n options = Utils.defaults(options, {\n friction: 0.3,\n restitution: 0.3,\n contactEquationStiffness: 1e7,\n contactEquationRelaxation: 3,\n frictionEquationStiffness: 1e7,\n frictionEquationRelaxation: 3\n });\n this.id = ContactMaterial.idCounter++;\n this.materials = [m1, m2];\n this.friction = options.friction;\n this.restitution = options.restitution;\n this.contactEquationStiffness = options.contactEquationStiffness;\n this.contactEquationRelaxation = options.contactEquationRelaxation;\n this.frictionEquationStiffness = options.frictionEquationStiffness;\n this.frictionEquationRelaxation = options.frictionEquationRelaxation;\n }\n\n}\nContactMaterial.idCounter = 0;\n\n/**\n * Defines a physics material.\n */\nclass Material {\n /**\n * Material name.\n * If options is a string, name will be set to that string.\n * @todo Deprecate this\n */\n\n /** Material id. */\n\n /**\n * Friction for this material.\n * If non-negative, it will be used instead of the friction given by ContactMaterials. If there's no matching ContactMaterial, the value from `defaultContactMaterial` in the World will be used.\n */\n\n /**\n * Restitution for this material.\n * If non-negative, it will be used instead of the restitution given by ContactMaterials. If there's no matching ContactMaterial, the value from `defaultContactMaterial` in the World will be used.\n */\n constructor(options = {}) {\n this.name = void 0;\n this.id = void 0;\n this.friction = void 0;\n this.restitution = void 0;\n let name = ''; // Backwards compatibility fix\n\n if (typeof options === 'string') {\n //console.warn(`Passing a string to MaterialOptions is deprecated, and has no effect`)\n name = options;\n options = {};\n }\n\n this.name = name;\n this.id = Material.idCounter++;\n this.friction = typeof options.friction !== 'undefined' ? options.friction : -1;\n this.restitution = typeof options.restitution !== 'undefined' ? options.restitution : -1;\n }\n\n}\nMaterial.idCounter = 0;\n\n/**\n * A spring, connecting two bodies.\n * @example\n * const spring = new Spring(boxBody, sphereBody, {\n * restLength: 0,\n * stiffness: 50,\n * damping: 1,\n * })\n *\n * // Compute the force after each step\n * world.addEventListener('postStep', (event) => {\n * spring.applyForce()\n * })\n */\nclass Spring {\n /**\n * Rest length of the spring. A number > 0.\n * @default 1\n */\n\n /**\n * Stiffness of the spring. A number >= 0.\n * @default 100\n */\n\n /**\n * Damping of the spring. A number >= 0.\n * @default 1\n */\n\n /**\n * First connected body.\n */\n\n /**\n * Second connected body.\n */\n\n /**\n * Anchor for bodyA in local bodyA coordinates.\n * Where to hook the spring to body A, in local body coordinates.\n * @default new Vec3()\n */\n\n /**\n * Anchor for bodyB in local bodyB coordinates.\n * Where to hook the spring to body B, in local body coordinates.\n * @default new Vec3()\n */\n constructor(bodyA, bodyB, options = {}) {\n this.restLength = void 0;\n this.stiffness = void 0;\n this.damping = void 0;\n this.bodyA = void 0;\n this.bodyB = void 0;\n this.localAnchorA = void 0;\n this.localAnchorB = void 0;\n this.restLength = typeof options.restLength === 'number' ? options.restLength : 1;\n this.stiffness = options.stiffness || 100;\n this.damping = options.damping || 1;\n this.bodyA = bodyA;\n this.bodyB = bodyB;\n this.localAnchorA = new Vec3();\n this.localAnchorB = new Vec3();\n\n if (options.localAnchorA) {\n this.localAnchorA.copy(options.localAnchorA);\n }\n\n if (options.localAnchorB) {\n this.localAnchorB.copy(options.localAnchorB);\n }\n\n if (options.worldAnchorA) {\n this.setWorldAnchorA(options.worldAnchorA);\n }\n\n if (options.worldAnchorB) {\n this.setWorldAnchorB(options.worldAnchorB);\n }\n }\n /**\n * Set the anchor point on body A, using world coordinates.\n */\n\n\n setWorldAnchorA(worldAnchorA) {\n this.bodyA.pointToLocalFrame(worldAnchorA, this.localAnchorA);\n }\n /**\n * Set the anchor point on body B, using world coordinates.\n */\n\n\n setWorldAnchorB(worldAnchorB) {\n this.bodyB.pointToLocalFrame(worldAnchorB, this.localAnchorB);\n }\n /**\n * Get the anchor point on body A, in world coordinates.\n * @param result The vector to store the result in.\n */\n\n\n getWorldAnchorA(result) {\n this.bodyA.pointToWorldFrame(this.localAnchorA, result);\n }\n /**\n * Get the anchor point on body B, in world coordinates.\n * @param result The vector to store the result in.\n */\n\n\n getWorldAnchorB(result) {\n this.bodyB.pointToWorldFrame(this.localAnchorB, result);\n }\n /**\n * Apply the spring force to the connected bodies.\n */\n\n\n applyForce() {\n const k = this.stiffness;\n const d = this.damping;\n const l = this.restLength;\n const bodyA = this.bodyA;\n const bodyB = this.bodyB;\n const r = applyForce_r;\n const r_unit = applyForce_r_unit;\n const u = applyForce_u;\n const f = applyForce_f;\n const tmp = applyForce_tmp;\n const worldAnchorA = applyForce_worldAnchorA;\n const worldAnchorB = applyForce_worldAnchorB;\n const ri = applyForce_ri;\n const rj = applyForce_rj;\n const ri_x_f = applyForce_ri_x_f;\n const rj_x_f = applyForce_rj_x_f; // Get world anchors\n\n this.getWorldAnchorA(worldAnchorA);\n this.getWorldAnchorB(worldAnchorB); // Get offset points\n\n worldAnchorA.vsub(bodyA.position, ri);\n worldAnchorB.vsub(bodyB.position, rj); // Compute distance vector between world anchor points\n\n worldAnchorB.vsub(worldAnchorA, r);\n const rlen = r.length();\n r_unit.copy(r);\n r_unit.normalize(); // Compute relative velocity of the anchor points, u\n\n bodyB.velocity.vsub(bodyA.velocity, u); // Add rotational velocity\n\n bodyB.angularVelocity.cross(rj, tmp);\n u.vadd(tmp, u);\n bodyA.angularVelocity.cross(ri, tmp);\n u.vsub(tmp, u); // F = - k * ( x - L ) - D * ( u )\n\n r_unit.scale(-k * (rlen - l) - d * u.dot(r_unit), f); // Add forces to bodies\n\n bodyA.force.vsub(f, bodyA.force);\n bodyB.force.vadd(f, bodyB.force); // Angular force\n\n ri.cross(f, ri_x_f);\n rj.cross(f, rj_x_f);\n bodyA.torque.vsub(ri_x_f, bodyA.torque);\n bodyB.torque.vadd(rj_x_f, bodyB.torque);\n }\n\n}\nconst applyForce_r = new Vec3();\nconst applyForce_r_unit = new Vec3();\nconst applyForce_u = new Vec3();\nconst applyForce_f = new Vec3();\nconst applyForce_worldAnchorA = new Vec3();\nconst applyForce_worldAnchorB = new Vec3();\nconst applyForce_ri = new Vec3();\nconst applyForce_rj = new Vec3();\nconst applyForce_ri_x_f = new Vec3();\nconst applyForce_rj_x_f = new Vec3();\nconst applyForce_tmp = new Vec3();\n\n/**\n * WheelInfo\n */\nclass WheelInfo {\n /**\n * Max travel distance of the suspension, in meters.\n * @default 1\n */\n\n /**\n * Speed to apply to the wheel rotation when the wheel is sliding.\n * @default -0.1\n */\n\n /**\n * If the customSlidingRotationalSpeed should be used.\n * @default false\n */\n\n /**\n * sliding\n */\n\n /**\n * Connection point, defined locally in the chassis body frame.\n */\n\n /**\n * chassisConnectionPointWorld\n */\n\n /**\n * directionLocal\n */\n\n /**\n * directionWorld\n */\n\n /**\n * axleLocal\n */\n\n /**\n * axleWorld\n */\n\n /**\n * suspensionRestLength\n * @default 1\n */\n\n /**\n * suspensionMaxLength\n * @default 2\n */\n\n /**\n * radius\n * @default 1\n */\n\n /**\n * suspensionStiffness\n * @default 100\n */\n\n /**\n * dampingCompression\n * @default 10\n */\n\n /**\n * dampingRelaxation\n * @default 10\n */\n\n /**\n * frictionSlip\n * @default 10.5\n */\n\n /** forwardAcceleration */\n\n /** sideAcceleration */\n\n /**\n * steering\n * @default 0\n */\n\n /**\n * Rotation value, in radians.\n * @default 0\n */\n\n /**\n * deltaRotation\n * @default 0\n */\n\n /**\n * rollInfluence\n * @default 0.01\n */\n\n /**\n * maxSuspensionForce\n */\n\n /**\n * engineForce\n */\n\n /**\n * brake\n */\n\n /**\n * isFrontWheel\n * @default true\n */\n\n /**\n * clippedInvContactDotSuspension\n * @default 1\n */\n\n /**\n * suspensionRelativeVelocity\n * @default 0\n */\n\n /**\n * suspensionForce\n * @default 0\n */\n\n /**\n * slipInfo\n */\n\n /**\n * skidInfo\n * @default 0\n */\n\n /**\n * suspensionLength\n * @default 0\n */\n\n /**\n * sideImpulse\n */\n\n /**\n * forwardImpulse\n */\n\n /**\n * The result from raycasting.\n */\n\n /**\n * Wheel world transform.\n */\n\n /**\n * isInContact\n */\n constructor(options = {}) {\n this.maxSuspensionTravel = void 0;\n this.customSlidingRotationalSpeed = void 0;\n this.useCustomSlidingRotationalSpeed = void 0;\n this.sliding = void 0;\n this.chassisConnectionPointLocal = void 0;\n this.chassisConnectionPointWorld = void 0;\n this.directionLocal = void 0;\n this.directionWorld = void 0;\n this.axleLocal = void 0;\n this.axleWorld = void 0;\n this.suspensionRestLength = void 0;\n this.suspensionMaxLength = void 0;\n this.radius = void 0;\n this.suspensionStiffness = void 0;\n this.dampingCompression = void 0;\n this.dampingRelaxation = void 0;\n this.frictionSlip = void 0;\n this.forwardAcceleration = void 0;\n this.sideAcceleration = void 0;\n this.steering = void 0;\n this.rotation = void 0;\n this.deltaRotation = void 0;\n this.rollInfluence = void 0;\n this.maxSuspensionForce = void 0;\n this.engineForce = void 0;\n this.brake = void 0;\n this.isFrontWheel = void 0;\n this.clippedInvContactDotSuspension = void 0;\n this.suspensionRelativeVelocity = void 0;\n this.suspensionForce = void 0;\n this.slipInfo = void 0;\n this.skidInfo = void 0;\n this.suspensionLength = void 0;\n this.sideImpulse = void 0;\n this.forwardImpulse = void 0;\n this.raycastResult = void 0;\n this.worldTransform = void 0;\n this.isInContact = void 0;\n options = Utils.defaults(options, {\n chassisConnectionPointLocal: new Vec3(),\n chassisConnectionPointWorld: new Vec3(),\n directionLocal: new Vec3(),\n directionWorld: new Vec3(),\n axleLocal: new Vec3(),\n axleWorld: new Vec3(),\n suspensionRestLength: 1,\n suspensionMaxLength: 2,\n radius: 1,\n suspensionStiffness: 100,\n dampingCompression: 10,\n dampingRelaxation: 10,\n frictionSlip: 10.5,\n forwardAcceleration: 1,\n sideAcceleration: 1,\n steering: 0,\n rotation: 0,\n deltaRotation: 0,\n rollInfluence: 0.01,\n maxSuspensionForce: Number.MAX_VALUE,\n isFrontWheel: true,\n clippedInvContactDotSuspension: 1,\n suspensionRelativeVelocity: 0,\n suspensionForce: 0,\n slipInfo: 0,\n skidInfo: 0,\n suspensionLength: 0,\n maxSuspensionTravel: 1,\n useCustomSlidingRotationalSpeed: false,\n customSlidingRotationalSpeed: -0.1\n });\n this.maxSuspensionTravel = options.maxSuspensionTravel;\n this.customSlidingRotationalSpeed = options.customSlidingRotationalSpeed;\n this.useCustomSlidingRotationalSpeed = options.useCustomSlidingRotationalSpeed;\n this.sliding = false;\n this.chassisConnectionPointLocal = options.chassisConnectionPointLocal.clone();\n this.chassisConnectionPointWorld = options.chassisConnectionPointWorld.clone();\n this.directionLocal = options.directionLocal.clone();\n this.directionWorld = options.directionWorld.clone();\n this.axleLocal = options.axleLocal.clone();\n this.axleWorld = options.axleWorld.clone();\n this.suspensionRestLength = options.suspensionRestLength;\n this.suspensionMaxLength = options.suspensionMaxLength;\n this.radius = options.radius;\n this.suspensionStiffness = options.suspensionStiffness;\n this.dampingCompression = options.dampingCompression;\n this.dampingRelaxation = options.dampingRelaxation;\n this.frictionSlip = options.frictionSlip;\n this.forwardAcceleration = options.forwardAcceleration;\n this.sideAcceleration = options.sideAcceleration;\n this.steering = 0;\n this.rotation = 0;\n this.deltaRotation = 0;\n this.rollInfluence = options.rollInfluence;\n this.maxSuspensionForce = options.maxSuspensionForce;\n this.engineForce = 0;\n this.brake = 0;\n this.isFrontWheel = options.isFrontWheel;\n this.clippedInvContactDotSuspension = 1;\n this.suspensionRelativeVelocity = 0;\n this.suspensionForce = 0;\n this.slipInfo = 0;\n this.skidInfo = 0;\n this.suspensionLength = 0;\n this.sideImpulse = 0;\n this.forwardImpulse = 0;\n this.raycastResult = new RaycastResult();\n this.worldTransform = new Transform();\n this.isInContact = false;\n }\n\n updateWheel(chassis) {\n const raycastResult = this.raycastResult;\n\n if (this.isInContact) {\n const project = raycastResult.hitNormalWorld.dot(raycastResult.directionWorld);\n raycastResult.hitPointWorld.vsub(chassis.position, relpos);\n chassis.getVelocityAtWorldPoint(relpos, chassis_velocity_at_contactPoint);\n const projVel = raycastResult.hitNormalWorld.dot(chassis_velocity_at_contactPoint);\n\n if (project >= -0.1) {\n this.suspensionRelativeVelocity = 0.0;\n this.clippedInvContactDotSuspension = 1.0 / 0.1;\n } else {\n const inv = -1 / project;\n this.suspensionRelativeVelocity = projVel * inv;\n this.clippedInvContactDotSuspension = inv;\n }\n } else {\n // Not in contact : position wheel in a nice (rest length) position\n raycastResult.suspensionLength = this.suspensionRestLength;\n this.suspensionRelativeVelocity = 0.0;\n raycastResult.directionWorld.scale(-1, raycastResult.hitNormalWorld);\n this.clippedInvContactDotSuspension = 1.0;\n }\n }\n\n}\nconst chassis_velocity_at_contactPoint = new Vec3();\nconst relpos = new Vec3();\n\n/**\n * Vehicle helper class that casts rays from the wheel positions towards the ground and applies forces.\n */\nclass RaycastVehicle {\n /** The car chassis body. */\n\n /** The wheels. */\n\n /** Will be set to true if the car is sliding. */\n\n /** Index of the right axis. x=0, y=1, z=2 */\n\n /** Index of the forward axis. x=0, y=1, z=2 */\n\n /** Index of the up axis. x=0, y=1, z=2 */\n\n /** The constraints. */\n\n /** Optional pre-step callback. */\n\n /** Number of wheels on the ground. */\n constructor(options) {\n this.chassisBody = void 0;\n this.wheelInfos = void 0;\n this.sliding = void 0;\n this.world = void 0;\n this.indexRightAxis = void 0;\n this.indexForwardAxis = void 0;\n this.indexUpAxis = void 0;\n this.constraints = void 0;\n this.preStepCallback = void 0;\n this.currentVehicleSpeedKmHour = void 0;\n this.numWheelsOnGround = void 0;\n this.chassisBody = options.chassisBody;\n this.wheelInfos = [];\n this.sliding = false;\n this.world = null;\n this.indexRightAxis = typeof options.indexRightAxis !== 'undefined' ? options.indexRightAxis : 2;\n this.indexForwardAxis = typeof options.indexForwardAxis !== 'undefined' ? options.indexForwardAxis : 0;\n this.indexUpAxis = typeof options.indexUpAxis !== 'undefined' ? options.indexUpAxis : 1;\n this.constraints = [];\n\n this.preStepCallback = () => {};\n\n this.currentVehicleSpeedKmHour = 0;\n this.numWheelsOnGround = 0;\n }\n /**\n * Add a wheel. For information about the options, see `WheelInfo`.\n */\n\n\n addWheel(options = {}) {\n const info = new WheelInfo(options);\n const index = this.wheelInfos.length;\n this.wheelInfos.push(info);\n return index;\n }\n /**\n * Set the steering value of a wheel.\n */\n\n\n setSteeringValue(value, wheelIndex) {\n const wheel = this.wheelInfos[wheelIndex];\n wheel.steering = value;\n }\n /**\n * Set the wheel force to apply on one of the wheels each time step\n */\n\n\n applyEngineForce(value, wheelIndex) {\n this.wheelInfos[wheelIndex].engineForce = value;\n }\n /**\n * Set the braking force of a wheel\n */\n\n\n setBrake(brake, wheelIndex) {\n this.wheelInfos[wheelIndex].brake = brake;\n }\n /**\n * Add the vehicle including its constraints to the world.\n */\n\n\n addToWorld(world) {\n world.addBody(this.chassisBody);\n const that = this;\n\n this.preStepCallback = () => {\n that.updateVehicle(world.dt);\n };\n\n world.addEventListener('preStep', this.preStepCallback);\n this.world = world;\n }\n /**\n * Get one of the wheel axles, world-oriented.\n */\n\n\n getVehicleAxisWorld(axisIndex, result) {\n result.set(axisIndex === 0 ? 1 : 0, axisIndex === 1 ? 1 : 0, axisIndex === 2 ? 1 : 0);\n this.chassisBody.vectorToWorldFrame(result, result);\n }\n\n updateVehicle(timeStep) {\n const wheelInfos = this.wheelInfos;\n const numWheels = wheelInfos.length;\n const chassisBody = this.chassisBody;\n\n for (let i = 0; i < numWheels; i++) {\n this.updateWheelTransform(i);\n }\n\n this.currentVehicleSpeedKmHour = 3.6 * chassisBody.velocity.length();\n const forwardWorld = new Vec3();\n this.getVehicleAxisWorld(this.indexForwardAxis, forwardWorld);\n\n if (forwardWorld.dot(chassisBody.velocity) < 0) {\n this.currentVehicleSpeedKmHour *= -1;\n } // simulate suspension\n\n\n for (let i = 0; i < numWheels; i++) {\n this.castRay(wheelInfos[i]);\n }\n\n this.updateSuspension(timeStep);\n const impulse = new Vec3();\n const relpos = new Vec3();\n\n for (let i = 0; i < numWheels; i++) {\n //apply suspension force\n const wheel = wheelInfos[i];\n let suspensionForce = wheel.suspensionForce;\n\n if (suspensionForce > wheel.maxSuspensionForce) {\n suspensionForce = wheel.maxSuspensionForce;\n }\n\n wheel.raycastResult.hitNormalWorld.scale(suspensionForce * timeStep, impulse);\n wheel.raycastResult.hitPointWorld.vsub(chassisBody.position, relpos);\n chassisBody.applyImpulse(impulse, relpos);\n }\n\n this.updateFriction(timeStep);\n const hitNormalWorldScaledWithProj = new Vec3();\n const fwd = new Vec3();\n const vel = new Vec3();\n\n for (let i = 0; i < numWheels; i++) {\n const wheel = wheelInfos[i]; //const relpos = new Vec3();\n //wheel.chassisConnectionPointWorld.vsub(chassisBody.position, relpos);\n\n chassisBody.getVelocityAtWorldPoint(wheel.chassisConnectionPointWorld, vel); // Hack to get the rotation in the correct direction\n\n let m = 1;\n\n switch (this.indexUpAxis) {\n case 1:\n m = -1;\n break;\n }\n\n if (wheel.isInContact) {\n this.getVehicleAxisWorld(this.indexForwardAxis, fwd);\n const proj = fwd.dot(wheel.raycastResult.hitNormalWorld);\n wheel.raycastResult.hitNormalWorld.scale(proj, hitNormalWorldScaledWithProj);\n fwd.vsub(hitNormalWorldScaledWithProj, fwd);\n const proj2 = fwd.dot(vel);\n wheel.deltaRotation = m * proj2 * timeStep / wheel.radius;\n }\n\n if ((wheel.sliding || !wheel.isInContact) && wheel.engineForce !== 0 && wheel.useCustomSlidingRotationalSpeed) {\n // Apply custom rotation when accelerating and sliding\n wheel.deltaRotation = (wheel.engineForce > 0 ? 1 : -1) * wheel.customSlidingRotationalSpeed * timeStep;\n } // Lock wheels\n\n\n if (Math.abs(wheel.brake) > Math.abs(wheel.engineForce)) {\n wheel.deltaRotation = 0;\n }\n\n wheel.rotation += wheel.deltaRotation; // Use the old value\n\n wheel.deltaRotation *= 0.99; // damping of rotation when not in contact\n }\n }\n\n updateSuspension(deltaTime) {\n const chassisBody = this.chassisBody;\n const chassisMass = chassisBody.mass;\n const wheelInfos = this.wheelInfos;\n const numWheels = wheelInfos.length;\n\n for (let w_it = 0; w_it < numWheels; w_it++) {\n const wheel = wheelInfos[w_it];\n\n if (wheel.isInContact) {\n let force; // Spring\n\n const susp_length = wheel.suspensionRestLength;\n const current_length = wheel.suspensionLength;\n const length_diff = susp_length - current_length;\n force = wheel.suspensionStiffness * length_diff * wheel.clippedInvContactDotSuspension; // Damper\n\n const projected_rel_vel = wheel.suspensionRelativeVelocity;\n let susp_damping;\n\n if (projected_rel_vel < 0) {\n susp_damping = wheel.dampingCompression;\n } else {\n susp_damping = wheel.dampingRelaxation;\n }\n\n force -= susp_damping * projected_rel_vel;\n wheel.suspensionForce = force * chassisMass;\n\n if (wheel.suspensionForce < 0) {\n wheel.suspensionForce = 0;\n }\n } else {\n wheel.suspensionForce = 0;\n }\n }\n }\n /**\n * Remove the vehicle including its constraints from the world.\n */\n\n\n removeFromWorld(world) {\n this.constraints;\n world.removeBody(this.chassisBody);\n world.removeEventListener('preStep', this.preStepCallback);\n this.world = null;\n }\n\n castRay(wheel) {\n const rayvector = castRay_rayvector;\n const target = castRay_target;\n this.updateWheelTransformWorld(wheel);\n const chassisBody = this.chassisBody;\n let depth = -1;\n const raylen = wheel.suspensionRestLength + wheel.radius;\n wheel.directionWorld.scale(raylen, rayvector);\n const source = wheel.chassisConnectionPointWorld;\n source.vadd(rayvector, target);\n const raycastResult = wheel.raycastResult;\n raycastResult.reset(); // Turn off ray collision with the chassis temporarily\n\n const oldState = chassisBody.collisionResponse;\n chassisBody.collisionResponse = false; // Cast ray against world\n\n this.world.rayTest(source, target, raycastResult);\n chassisBody.collisionResponse = oldState;\n const object = raycastResult.body;\n wheel.raycastResult.groundObject = 0;\n\n if (object) {\n depth = raycastResult.distance;\n wheel.raycastResult.hitNormalWorld = raycastResult.hitNormalWorld;\n wheel.isInContact = true;\n const hitDistance = raycastResult.distance;\n wheel.suspensionLength = hitDistance - wheel.radius; // clamp on max suspension travel\n\n const minSuspensionLength = wheel.suspensionRestLength - wheel.maxSuspensionTravel;\n const maxSuspensionLength = wheel.suspensionRestLength + wheel.maxSuspensionTravel;\n\n if (wheel.suspensionLength < minSuspensionLength) {\n wheel.suspensionLength = minSuspensionLength;\n }\n\n if (wheel.suspensionLength > maxSuspensionLength) {\n wheel.suspensionLength = maxSuspensionLength;\n wheel.raycastResult.reset();\n }\n\n const denominator = wheel.raycastResult.hitNormalWorld.dot(wheel.directionWorld);\n const chassis_velocity_at_contactPoint = new Vec3();\n chassisBody.getVelocityAtWorldPoint(wheel.raycastResult.hitPointWorld, chassis_velocity_at_contactPoint);\n const projVel = wheel.raycastResult.hitNormalWorld.dot(chassis_velocity_at_contactPoint);\n\n if (denominator >= -0.1) {\n wheel.suspensionRelativeVelocity = 0;\n wheel.clippedInvContactDotSuspension = 1 / 0.1;\n } else {\n const inv = -1 / denominator;\n wheel.suspensionRelativeVelocity = projVel * inv;\n wheel.clippedInvContactDotSuspension = inv;\n }\n } else {\n //put wheel info as in rest position\n wheel.suspensionLength = wheel.suspensionRestLength + 0 * wheel.maxSuspensionTravel;\n wheel.suspensionRelativeVelocity = 0.0;\n wheel.directionWorld.scale(-1, wheel.raycastResult.hitNormalWorld);\n wheel.clippedInvContactDotSuspension = 1.0;\n }\n\n return depth;\n }\n\n updateWheelTransformWorld(wheel) {\n wheel.isInContact = false;\n const chassisBody = this.chassisBody;\n chassisBody.pointToWorldFrame(wheel.chassisConnectionPointLocal, wheel.chassisConnectionPointWorld);\n chassisBody.vectorToWorldFrame(wheel.directionLocal, wheel.directionWorld);\n chassisBody.vectorToWorldFrame(wheel.axleLocal, wheel.axleWorld);\n }\n /**\n * Update one of the wheel transform.\n * Note when rendering wheels: during each step, wheel transforms are updated BEFORE the chassis; ie. their position becomes invalid after the step. Thus when you render wheels, you must update wheel transforms before rendering them. See raycastVehicle demo for an example.\n * @param wheelIndex The wheel index to update.\n */\n\n\n updateWheelTransform(wheelIndex) {\n const up = tmpVec4;\n const right = tmpVec5;\n const fwd = tmpVec6;\n const wheel = this.wheelInfos[wheelIndex];\n this.updateWheelTransformWorld(wheel);\n wheel.directionLocal.scale(-1, up);\n right.copy(wheel.axleLocal);\n up.cross(right, fwd);\n fwd.normalize();\n right.normalize(); // Rotate around steering over the wheelAxle\n\n const steering = wheel.steering;\n const steeringOrn = new Quaternion();\n steeringOrn.setFromAxisAngle(up, steering);\n const rotatingOrn = new Quaternion();\n rotatingOrn.setFromAxisAngle(right, wheel.rotation); // World rotation of the wheel\n\n const q = wheel.worldTransform.quaternion;\n this.chassisBody.quaternion.mult(steeringOrn, q);\n q.mult(rotatingOrn, q);\n q.normalize(); // world position of the wheel\n\n const p = wheel.worldTransform.position;\n p.copy(wheel.directionWorld);\n p.scale(wheel.suspensionLength, p);\n p.vadd(wheel.chassisConnectionPointWorld, p);\n }\n /**\n * Get the world transform of one of the wheels\n */\n\n\n getWheelTransformWorld(wheelIndex) {\n return this.wheelInfos[wheelIndex].worldTransform;\n }\n\n updateFriction(timeStep) {\n const surfNormalWS_scaled_proj = updateFriction_surfNormalWS_scaled_proj; //calculate the impulse, so that the wheels don't move sidewards\n\n const wheelInfos = this.wheelInfos;\n const numWheels = wheelInfos.length;\n const chassisBody = this.chassisBody;\n const forwardWS = updateFriction_forwardWS;\n const axle = updateFriction_axle;\n this.numWheelsOnGround = 0;\n\n for (let i = 0; i < numWheels; i++) {\n const wheel = wheelInfos[i];\n const groundObject = wheel.raycastResult.body;\n\n if (groundObject) {\n this.numWheelsOnGround++;\n }\n\n wheel.sideImpulse = 0;\n wheel.forwardImpulse = 0;\n\n if (!forwardWS[i]) {\n forwardWS[i] = new Vec3();\n }\n\n if (!axle[i]) {\n axle[i] = new Vec3();\n }\n }\n\n for (let i = 0; i < numWheels; i++) {\n const wheel = wheelInfos[i];\n const groundObject = wheel.raycastResult.body;\n\n if (groundObject) {\n const axlei = axle[i];\n const wheelTrans = this.getWheelTransformWorld(i); // Get world axle\n\n wheelTrans.vectorToWorldFrame(directions[this.indexRightAxis], axlei);\n const surfNormalWS = wheel.raycastResult.hitNormalWorld;\n const proj = axlei.dot(surfNormalWS);\n surfNormalWS.scale(proj, surfNormalWS_scaled_proj);\n axlei.vsub(surfNormalWS_scaled_proj, axlei);\n axlei.normalize();\n surfNormalWS.cross(axlei, forwardWS[i]);\n forwardWS[i].normalize();\n wheel.sideImpulse = resolveSingleBilateral(chassisBody, wheel.raycastResult.hitPointWorld, groundObject, wheel.raycastResult.hitPointWorld, axlei);\n wheel.sideImpulse *= sideFrictionStiffness2;\n }\n }\n\n const sideFactor = 1;\n const fwdFactor = 0.5;\n this.sliding = false;\n\n for (let i = 0; i < numWheels; i++) {\n const wheel = wheelInfos[i];\n const groundObject = wheel.raycastResult.body;\n let rollingFriction = 0;\n wheel.slipInfo = 1;\n\n if (groundObject) {\n const defaultRollingFrictionImpulse = 0;\n const maxImpulse = wheel.brake ? wheel.brake : defaultRollingFrictionImpulse; // btWheelContactPoint contactPt(chassisBody,groundObject,wheelInfraycastInfo.hitPointWorld,forwardWS[wheel],maxImpulse);\n // rollingFriction = calcRollingFriction(contactPt);\n\n rollingFriction = calcRollingFriction(chassisBody, groundObject, wheel.raycastResult.hitPointWorld, forwardWS[i], maxImpulse);\n rollingFriction += wheel.engineForce * timeStep; // rollingFriction = 0;\n\n const factor = maxImpulse / rollingFriction;\n wheel.slipInfo *= factor;\n } //switch between active rolling (throttle), braking and non-active rolling friction (nthrottle/break)\n\n\n wheel.forwardImpulse = 0;\n wheel.skidInfo = 1;\n\n if (groundObject) {\n wheel.skidInfo = 1;\n const maximp = wheel.suspensionForce * timeStep * wheel.frictionSlip;\n const maximpSide = maximp;\n const maximpSquared = maximp * maximpSide;\n wheel.forwardImpulse = rollingFriction; //wheelInfo.engineForce* timeStep;\n\n const x = wheel.forwardImpulse * fwdFactor / wheel.forwardAcceleration;\n const y = wheel.sideImpulse * sideFactor / wheel.sideAcceleration;\n const impulseSquared = x * x + y * y;\n wheel.sliding = false;\n\n if (impulseSquared > maximpSquared) {\n this.sliding = true;\n wheel.sliding = true;\n const factor = maximp / Math.sqrt(impulseSquared);\n wheel.skidInfo *= factor;\n }\n }\n }\n\n if (this.sliding) {\n for (let i = 0; i < numWheels; i++) {\n const wheel = wheelInfos[i];\n\n if (wheel.sideImpulse !== 0) {\n if (wheel.skidInfo < 1) {\n wheel.forwardImpulse *= wheel.skidInfo;\n wheel.sideImpulse *= wheel.skidInfo;\n }\n }\n }\n } // apply the impulses\n\n\n for (let i = 0; i < numWheels; i++) {\n const wheel = wheelInfos[i];\n const rel_pos = new Vec3();\n wheel.raycastResult.hitPointWorld.vsub(chassisBody.position, rel_pos); // cannons applyimpulse is using world coord for the position\n //rel_pos.copy(wheel.raycastResult.hitPointWorld);\n\n if (wheel.forwardImpulse !== 0) {\n const impulse = new Vec3();\n forwardWS[i].scale(wheel.forwardImpulse, impulse);\n chassisBody.applyImpulse(impulse, rel_pos);\n }\n\n if (wheel.sideImpulse !== 0) {\n const groundObject = wheel.raycastResult.body;\n const rel_pos2 = new Vec3();\n wheel.raycastResult.hitPointWorld.vsub(groundObject.position, rel_pos2); //rel_pos2.copy(wheel.raycastResult.hitPointWorld);\n\n const sideImp = new Vec3();\n axle[i].scale(wheel.sideImpulse, sideImp); // Scale the relative position in the up direction with rollInfluence.\n // If rollInfluence is 1, the impulse will be applied on the hitPoint (easy to roll over), if it is zero it will be applied in the same plane as the center of mass (not easy to roll over).\n\n chassisBody.vectorToLocalFrame(rel_pos, rel_pos);\n rel_pos['xyz'[this.indexUpAxis]] *= wheel.rollInfluence;\n chassisBody.vectorToWorldFrame(rel_pos, rel_pos);\n chassisBody.applyImpulse(sideImp, rel_pos); //apply friction impulse on the ground\n\n sideImp.scale(-1, sideImp);\n groundObject.applyImpulse(sideImp, rel_pos2);\n }\n }\n }\n\n}\nconst tmpVec4 = new Vec3();\nconst tmpVec5 = new Vec3();\nconst tmpVec6 = new Vec3();\nnew Ray();\nconst castRay_rayvector = new Vec3();\nconst castRay_target = new Vec3();\nconst directions = [new Vec3(1, 0, 0), new Vec3(0, 1, 0), new Vec3(0, 0, 1)];\nconst updateFriction_surfNormalWS_scaled_proj = new Vec3();\nconst updateFriction_axle = [];\nconst updateFriction_forwardWS = [];\nconst sideFrictionStiffness2 = 1;\nconst calcRollingFriction_vel1 = new Vec3();\nconst calcRollingFriction_vel2 = new Vec3();\nconst calcRollingFriction_vel = new Vec3();\n\nfunction calcRollingFriction(body0, body1, frictionPosWorld, frictionDirectionWorld, maxImpulse) {\n let j1 = 0;\n const contactPosWorld = frictionPosWorld; // const rel_pos1 = new Vec3();\n // const rel_pos2 = new Vec3();\n\n const vel1 = calcRollingFriction_vel1;\n const vel2 = calcRollingFriction_vel2;\n const vel = calcRollingFriction_vel; // contactPosWorld.vsub(body0.position, rel_pos1);\n // contactPosWorld.vsub(body1.position, rel_pos2);\n\n body0.getVelocityAtWorldPoint(contactPosWorld, vel1);\n body1.getVelocityAtWorldPoint(contactPosWorld, vel2);\n vel1.vsub(vel2, vel);\n const vrel = frictionDirectionWorld.dot(vel);\n const denom0 = computeImpulseDenominator(body0, frictionPosWorld, frictionDirectionWorld);\n const denom1 = computeImpulseDenominator(body1, frictionPosWorld, frictionDirectionWorld);\n const relaxation = 1;\n const jacDiagABInv = relaxation / (denom0 + denom1); // calculate j that moves us to zero relative velocity\n\n j1 = -vrel * jacDiagABInv;\n\n if (maxImpulse < j1) {\n j1 = maxImpulse;\n }\n\n if (j1 < -maxImpulse) {\n j1 = -maxImpulse;\n }\n\n return j1;\n}\n\nconst computeImpulseDenominator_r0 = new Vec3();\nconst computeImpulseDenominator_c0 = new Vec3();\nconst computeImpulseDenominator_vec = new Vec3();\nconst computeImpulseDenominator_m = new Vec3();\n\nfunction computeImpulseDenominator(body, pos, normal) {\n const r0 = computeImpulseDenominator_r0;\n const c0 = computeImpulseDenominator_c0;\n const vec = computeImpulseDenominator_vec;\n const m = computeImpulseDenominator_m;\n pos.vsub(body.position, r0);\n r0.cross(normal, c0);\n body.invInertiaWorld.vmult(c0, m);\n m.cross(r0, vec);\n return body.invMass + normal.dot(vec);\n}\n\nconst resolveSingleBilateral_vel1 = new Vec3();\nconst resolveSingleBilateral_vel2 = new Vec3();\nconst resolveSingleBilateral_vel = new Vec3(); // bilateral constraint between two dynamic objects\n\nfunction resolveSingleBilateral(body1, pos1, body2, pos2, normal) {\n const normalLenSqr = normal.lengthSquared();\n\n if (normalLenSqr > 1.1) {\n return 0; // no impulse\n } // const rel_pos1 = new Vec3();\n // const rel_pos2 = new Vec3();\n // pos1.vsub(body1.position, rel_pos1);\n // pos2.vsub(body2.position, rel_pos2);\n\n\n const vel1 = resolveSingleBilateral_vel1;\n const vel2 = resolveSingleBilateral_vel2;\n const vel = resolveSingleBilateral_vel;\n body1.getVelocityAtWorldPoint(pos1, vel1);\n body2.getVelocityAtWorldPoint(pos2, vel2);\n vel1.vsub(vel2, vel);\n const rel_vel = normal.dot(vel);\n const contactDamping = 0.2;\n const massTerm = 1 / (body1.invMass + body2.invMass);\n const impulse = -contactDamping * rel_vel * massTerm;\n return impulse;\n}\n\n/**\n * Spherical shape\n * @example\n * const radius = 1\n * const sphereShape = new CANNON.Sphere(radius)\n * const sphereBody = new CANNON.Body({ mass: 1, shape: sphereShape })\n * world.addBody(sphereBody)\n */\nclass Sphere extends Shape {\n /**\n * The radius of the sphere.\n */\n\n /**\n *\n * @param radius The radius of the sphere, a non-negative number.\n */\n constructor(radius) {\n super({\n type: Shape.types.SPHERE\n });\n this.radius = void 0;\n this.radius = radius !== undefined ? radius : 1.0;\n\n if (this.radius < 0) {\n throw new Error('The sphere radius cannot be negative.');\n }\n\n this.updateBoundingSphereRadius();\n }\n /** calculateLocalInertia */\n\n\n calculateLocalInertia(mass, target = new Vec3()) {\n const I = 2.0 * mass * this.radius * this.radius / 5.0;\n target.x = I;\n target.y = I;\n target.z = I;\n return target;\n }\n /** volume */\n\n\n volume() {\n return 4.0 * Math.PI * Math.pow(this.radius, 3) / 3.0;\n }\n\n updateBoundingSphereRadius() {\n this.boundingSphereRadius = this.radius;\n }\n\n calculateWorldAABB(pos, quat, min, max) {\n const r = this.radius;\n const axes = ['x', 'y', 'z'];\n\n for (let i = 0; i < axes.length; i++) {\n const ax = axes[i];\n min[ax] = pos[ax] - r;\n max[ax] = pos[ax] + r;\n }\n }\n\n}\n\n/**\n * Simple vehicle helper class with spherical rigid body wheels.\n */\nclass RigidVehicle {\n /**\n * The bodies of the wheels.\n */\n\n /**\n * The chassis body.\n */\n\n /**\n * The constraints.\n */\n\n /**\n * The wheel axes.\n */\n\n /**\n * The wheel forces.\n */\n constructor(options = {}) {\n this.wheelBodies = void 0;\n this.coordinateSystem = void 0;\n this.chassisBody = void 0;\n this.constraints = void 0;\n this.wheelAxes = void 0;\n this.wheelForces = void 0;\n this.wheelBodies = [];\n this.coordinateSystem = typeof options.coordinateSystem !== 'undefined' ? options.coordinateSystem.clone() : new Vec3(1, 2, 3);\n\n if (options.chassisBody) {\n this.chassisBody = options.chassisBody;\n } else {\n // No chassis body given. Create it!\n this.chassisBody = new Body({\n mass: 1,\n shape: new Box(new Vec3(5, 0.5, 2))\n });\n }\n\n this.constraints = [];\n this.wheelAxes = [];\n this.wheelForces = [];\n }\n /**\n * Add a wheel\n */\n\n\n addWheel(options = {}) {\n let wheelBody;\n\n if (options.body) {\n wheelBody = options.body;\n } else {\n // No wheel body given. Create it!\n wheelBody = new Body({\n mass: 1,\n shape: new Sphere(1.2)\n });\n }\n\n this.wheelBodies.push(wheelBody);\n this.wheelForces.push(0); // Position constrain wheels\n\n const position = typeof options.position !== 'undefined' ? options.position.clone() : new Vec3(); // Set position locally to the chassis\n\n const worldPosition = new Vec3();\n this.chassisBody.pointToWorldFrame(position, worldPosition);\n wheelBody.position.set(worldPosition.x, worldPosition.y, worldPosition.z); // Constrain wheel\n\n const axis = typeof options.axis !== 'undefined' ? options.axis.clone() : new Vec3(0, 0, 1);\n this.wheelAxes.push(axis);\n const hingeConstraint = new HingeConstraint(this.chassisBody, wheelBody, {\n pivotA: position,\n axisA: axis,\n pivotB: Vec3.ZERO,\n axisB: axis,\n collideConnected: false\n });\n this.constraints.push(hingeConstraint);\n return this.wheelBodies.length - 1;\n }\n /**\n * Set the steering value of a wheel.\n * @todo check coordinateSystem\n */\n\n\n setSteeringValue(value, wheelIndex) {\n // Set angle of the hinge axis\n const axis = this.wheelAxes[wheelIndex];\n const c = Math.cos(value);\n const s = Math.sin(value);\n const x = axis.x;\n const z = axis.z;\n this.constraints[wheelIndex].axisA.set(-c * x + s * z, 0, s * x + c * z);\n }\n /**\n * Set the target rotational speed of the hinge constraint.\n */\n\n\n setMotorSpeed(value, wheelIndex) {\n const hingeConstraint = this.constraints[wheelIndex];\n hingeConstraint.enableMotor();\n hingeConstraint.motorTargetVelocity = value;\n }\n /**\n * Set the target rotational speed of the hinge constraint.\n */\n\n\n disableMotor(wheelIndex) {\n const hingeConstraint = this.constraints[wheelIndex];\n hingeConstraint.disableMotor();\n }\n /**\n * Set the wheel force to apply on one of the wheels each time step\n */\n\n\n setWheelForce(value, wheelIndex) {\n this.wheelForces[wheelIndex] = value;\n }\n /**\n * Apply a torque on one of the wheels.\n */\n\n\n applyWheelForce(value, wheelIndex) {\n const axis = this.wheelAxes[wheelIndex];\n const wheelBody = this.wheelBodies[wheelIndex];\n const bodyTorque = wheelBody.torque;\n axis.scale(value, torque);\n wheelBody.vectorToWorldFrame(torque, torque);\n bodyTorque.vadd(torque, bodyTorque);\n }\n /**\n * Add the vehicle including its constraints to the world.\n */\n\n\n addToWorld(world) {\n const constraints = this.constraints;\n const bodies = this.wheelBodies.concat([this.chassisBody]);\n\n for (let i = 0; i < bodies.length; i++) {\n world.addBody(bodies[i]);\n }\n\n for (let i = 0; i < constraints.length; i++) {\n world.addConstraint(constraints[i]);\n }\n\n world.addEventListener('preStep', this._update.bind(this));\n }\n\n _update() {\n const wheelForces = this.wheelForces;\n\n for (let i = 0; i < wheelForces.length; i++) {\n this.applyWheelForce(wheelForces[i], i);\n }\n }\n /**\n * Remove the vehicle including its constraints from the world.\n */\n\n\n removeFromWorld(world) {\n const constraints = this.constraints;\n const bodies = this.wheelBodies.concat([this.chassisBody]);\n\n for (let i = 0; i < bodies.length; i++) {\n world.removeBody(bodies[i]);\n }\n\n for (let i = 0; i < constraints.length; i++) {\n world.removeConstraint(constraints[i]);\n }\n }\n /**\n * Get current rotational velocity of a wheel\n */\n\n\n getWheelSpeed(wheelIndex) {\n const axis = this.wheelAxes[wheelIndex];\n const wheelBody = this.wheelBodies[wheelIndex];\n const w = wheelBody.angularVelocity;\n this.chassisBody.vectorToWorldFrame(axis, worldAxis);\n return w.dot(worldAxis);\n }\n\n}\nconst torque = new Vec3();\nconst worldAxis = new Vec3();\n\n/**\n * Smoothed-particle hydrodynamics system\n * @todo Make parameters customizable in the constructor\n */\nclass SPHSystem {\n /**\n * The particles array.\n */\n\n /**\n * Density of the system (kg/m3).\n * @default 1\n */\n\n /**\n * Distance below which two particles are considered to be neighbors.\n * It should be adjusted so there are about 15-20 neighbor particles within this radius.\n * @default 1\n */\n\n /**\n * @default 1\n */\n\n /**\n * Viscosity of the system.\n * @default 0.01\n */\n\n /**\n * @default 0.000001\n */\n constructor() {\n this.particles = void 0;\n this.density = void 0;\n this.smoothingRadius = void 0;\n this.speedOfSound = void 0;\n this.viscosity = void 0;\n this.eps = void 0;\n this.pressures = void 0;\n this.densities = void 0;\n this.neighbors = void 0;\n this.particles = [];\n this.density = 1;\n this.smoothingRadius = 1;\n this.speedOfSound = 1;\n this.viscosity = 0.01;\n this.eps = 0.000001; // Stuff Computed per particle\n\n this.pressures = [];\n this.densities = [];\n this.neighbors = [];\n }\n /**\n * Add a particle to the system.\n */\n\n\n add(particle) {\n this.particles.push(particle);\n\n if (this.neighbors.length < this.particles.length) {\n this.neighbors.push([]);\n }\n }\n /**\n * Remove a particle from the system.\n */\n\n\n remove(particle) {\n const idx = this.particles.indexOf(particle);\n\n if (idx !== -1) {\n this.particles.splice(idx, 1);\n\n if (this.neighbors.length > this.particles.length) {\n this.neighbors.pop();\n }\n }\n }\n /**\n * Get neighbors within smoothing volume, save in the array neighbors\n */\n\n\n getNeighbors(particle, neighbors) {\n const N = this.particles.length;\n const id = particle.id;\n const R2 = this.smoothingRadius * this.smoothingRadius;\n const dist = SPHSystem_getNeighbors_dist;\n\n for (let i = 0; i !== N; i++) {\n const p = this.particles[i];\n p.position.vsub(particle.position, dist);\n\n if (id !== p.id && dist.lengthSquared() < R2) {\n neighbors.push(p);\n }\n }\n }\n\n update() {\n const N = this.particles.length;\n const dist = SPHSystem_update_dist;\n const cs = this.speedOfSound;\n const eps = this.eps;\n\n for (let i = 0; i !== N; i++) {\n const p = this.particles[i]; // Current particle\n\n const neighbors = this.neighbors[i]; // Get neighbors\n\n neighbors.length = 0;\n this.getNeighbors(p, neighbors);\n neighbors.push(this.particles[i]); // Add current too\n\n const numNeighbors = neighbors.length; // Accumulate density for the particle\n\n let sum = 0.0;\n\n for (let j = 0; j !== numNeighbors; j++) {\n //printf(\"Current particle has position %f %f %f\\n\",objects[id].pos.x(),objects[id].pos.y(),objects[id].pos.z());\n p.position.vsub(neighbors[j].position, dist);\n const len = dist.length();\n const weight = this.w(len);\n sum += neighbors[j].mass * weight;\n } // Save\n\n\n this.densities[i] = sum;\n this.pressures[i] = cs * cs * (this.densities[i] - this.density);\n } // Add forces\n // Sum to these accelerations\n\n\n const a_pressure = SPHSystem_update_a_pressure;\n const a_visc = SPHSystem_update_a_visc;\n const gradW = SPHSystem_update_gradW;\n const r_vec = SPHSystem_update_r_vec;\n const u = SPHSystem_update_u;\n\n for (let i = 0; i !== N; i++) {\n const particle = this.particles[i];\n a_pressure.set(0, 0, 0);\n a_visc.set(0, 0, 0); // Init vars\n\n let Pij;\n let nabla;\n\n const neighbors = this.neighbors[i];\n const numNeighbors = neighbors.length; //printf(\"Neighbors: \");\n\n for (let j = 0; j !== numNeighbors; j++) {\n const neighbor = neighbors[j]; //printf(\"%d \",nj);\n // Get r once for all..\n\n particle.position.vsub(neighbor.position, r_vec);\n const r = r_vec.length(); // Pressure contribution\n\n Pij = -neighbor.mass * (this.pressures[i] / (this.densities[i] * this.densities[i] + eps) + this.pressures[j] / (this.densities[j] * this.densities[j] + eps));\n this.gradw(r_vec, gradW); // Add to pressure acceleration\n\n gradW.scale(Pij, gradW);\n a_pressure.vadd(gradW, a_pressure); // Viscosity contribution\n\n neighbor.velocity.vsub(particle.velocity, u);\n u.scale(1.0 / (0.0001 + this.densities[i] * this.densities[j]) * this.viscosity * neighbor.mass, u);\n nabla = this.nablaw(r);\n u.scale(nabla, u); // Add to viscosity acceleration\n\n a_visc.vadd(u, a_visc);\n } // Calculate force\n\n\n a_visc.scale(particle.mass, a_visc);\n a_pressure.scale(particle.mass, a_pressure); // Add force to particles\n\n particle.force.vadd(a_visc, particle.force);\n particle.force.vadd(a_pressure, particle.force);\n }\n } // Calculate the weight using the W(r) weightfunction\n\n\n w(r) {\n // 315\n const h = this.smoothingRadius;\n return 315.0 / (64.0 * Math.PI * h ** 9) * (h * h - r * r) ** 3;\n } // calculate gradient of the weight function\n\n\n gradw(rVec, resultVec) {\n const r = rVec.length();\n const h = this.smoothingRadius;\n rVec.scale(945.0 / (32.0 * Math.PI * h ** 9) * (h * h - r * r) ** 2, resultVec);\n } // Calculate nabla(W)\n\n\n nablaw(r) {\n const h = this.smoothingRadius;\n const nabla = 945.0 / (32.0 * Math.PI * h ** 9) * (h * h - r * r) * (7 * r * r - 3 * h * h);\n return nabla;\n }\n\n}\nconst SPHSystem_getNeighbors_dist = new Vec3(); // Temp vectors for calculation\n\nconst SPHSystem_update_dist = new Vec3(); // Relative velocity\n\nconst SPHSystem_update_a_pressure = new Vec3();\nconst SPHSystem_update_a_visc = new Vec3();\nconst SPHSystem_update_gradW = new Vec3();\nconst SPHSystem_update_r_vec = new Vec3();\nconst SPHSystem_update_u = new Vec3();\n\n/**\n * Cylinder class.\n * @example\n * const radiusTop = 0.5\n * const radiusBottom = 0.5\n * const height = 2\n * const numSegments = 12\n * const cylinderShape = new CANNON.Cylinder(radiusTop, radiusBottom, height, numSegments)\n * const cylinderBody = new CANNON.Body({ mass: 1, shape: cylinderShape })\n * world.addBody(cylinderBody)\n */\n\nclass Cylinder extends ConvexPolyhedron {\n /** The radius of the top of the Cylinder. */\n\n /** The radius of the bottom of the Cylinder. */\n\n /** The height of the Cylinder. */\n\n /** The number of segments to build the cylinder out of. */\n\n /**\n * @param radiusTop The radius of the top of the Cylinder.\n * @param radiusBottom The radius of the bottom of the Cylinder.\n * @param height The height of the Cylinder.\n * @param numSegments The number of segments to build the cylinder out of.\n */\n constructor(radiusTop = 1, radiusBottom = 1, height = 1, numSegments = 8) {\n if (radiusTop < 0) {\n throw new Error('The cylinder radiusTop cannot be negative.');\n }\n\n if (radiusBottom < 0) {\n throw new Error('The cylinder radiusBottom cannot be negative.');\n }\n\n const N = numSegments;\n const vertices = [];\n const axes = [];\n const faces = [];\n const bottomface = [];\n const topface = [];\n const cos = Math.cos;\n const sin = Math.sin; // First bottom point\n\n vertices.push(new Vec3(-radiusBottom * sin(0), -height * 0.5, radiusBottom * cos(0)));\n bottomface.push(0); // First top point\n\n vertices.push(new Vec3(-radiusTop * sin(0), height * 0.5, radiusTop * cos(0)));\n topface.push(1);\n\n for (let i = 0; i < N; i++) {\n const theta = 2 * Math.PI / N * (i + 1);\n const thetaN = 2 * Math.PI / N * (i + 0.5);\n\n if (i < N - 1) {\n // Bottom\n vertices.push(new Vec3(-radiusBottom * sin(theta), -height * 0.5, radiusBottom * cos(theta)));\n bottomface.push(2 * i + 2); // Top\n\n vertices.push(new Vec3(-radiusTop * sin(theta), height * 0.5, radiusTop * cos(theta)));\n topface.push(2 * i + 3); // Face\n\n faces.push([2 * i, 2 * i + 1, 2 * i + 3, 2 * i + 2]);\n } else {\n faces.push([2 * i, 2 * i + 1, 1, 0]); // Connect\n } // Axis: we can cut off half of them if we have even number of segments\n\n\n if (N % 2 === 1 || i < N / 2) {\n axes.push(new Vec3(-sin(thetaN), 0, cos(thetaN)));\n }\n }\n\n faces.push(bottomface);\n axes.push(new Vec3(0, 1, 0)); // Reorder top face\n\n const temp = [];\n\n for (let i = 0; i < topface.length; i++) {\n temp.push(topface[topface.length - i - 1]);\n }\n\n faces.push(temp);\n super({\n vertices,\n faces,\n axes\n });\n this.radiusTop = void 0;\n this.radiusBottom = void 0;\n this.height = void 0;\n this.numSegments = void 0;\n this.type = Shape.types.CYLINDER;\n this.radiusTop = radiusTop;\n this.radiusBottom = radiusBottom;\n this.height = height;\n this.numSegments = numSegments;\n }\n\n}\n\n/**\n * Particle shape.\n * @example\n * const particleShape = new CANNON.Particle()\n * const particleBody = new CANNON.Body({ mass: 1, shape: particleShape })\n * world.addBody(particleBody)\n */\nclass Particle extends Shape {\n constructor() {\n super({\n type: Shape.types.PARTICLE\n });\n }\n /**\n * calculateLocalInertia\n */\n\n\n calculateLocalInertia(mass, target = new Vec3()) {\n target.set(0, 0, 0);\n return target;\n }\n\n volume() {\n return 0;\n }\n\n updateBoundingSphereRadius() {\n this.boundingSphereRadius = 0;\n }\n\n calculateWorldAABB(pos, quat, min, max) {\n // Get each axis max\n min.copy(pos);\n max.copy(pos);\n }\n\n}\n\n/**\n * A plane, facing in the Z direction. The plane has its surface at z=0 and everything below z=0 is assumed to be solid plane. To make the plane face in some other direction than z, you must put it inside a Body and rotate that body. See the demos.\n * @example\n * const planeShape = new CANNON.Plane()\n * const planeBody = new CANNON.Body({ mass: 0, shape: planeShape })\n * planeBody.quaternion.setFromEuler(-Math.PI / 2, 0, 0) // make it face up\n * world.addBody(planeBody)\n */\nclass Plane extends Shape {\n /** worldNormal */\n\n /** worldNormalNeedsUpdate */\n constructor() {\n super({\n type: Shape.types.PLANE\n }); // World oriented normal\n\n this.worldNormal = void 0;\n this.worldNormalNeedsUpdate = void 0;\n this.boundingSphereRadius = void 0;\n this.worldNormal = new Vec3();\n this.worldNormalNeedsUpdate = true;\n this.boundingSphereRadius = Number.MAX_VALUE;\n }\n /** computeWorldNormal */\n\n\n computeWorldNormal(quat) {\n const n = this.worldNormal;\n n.set(0, 0, 1);\n quat.vmult(n, n);\n this.worldNormalNeedsUpdate = false;\n }\n\n calculateLocalInertia(mass, target = new Vec3()) {\n return target;\n }\n\n volume() {\n return (// The plane is infinite...\n Number.MAX_VALUE\n );\n }\n\n calculateWorldAABB(pos, quat, min, max) {\n // The plane AABB is infinite, except if the normal is pointing along any axis\n tempNormal.set(0, 0, 1); // Default plane normal is z\n\n quat.vmult(tempNormal, tempNormal);\n const maxVal = Number.MAX_VALUE;\n min.set(-maxVal, -maxVal, -maxVal);\n max.set(maxVal, maxVal, maxVal);\n\n if (tempNormal.x === 1) {\n max.x = pos.x;\n } else if (tempNormal.x === -1) {\n min.x = pos.x;\n }\n\n if (tempNormal.y === 1) {\n max.y = pos.y;\n } else if (tempNormal.y === -1) {\n min.y = pos.y;\n }\n\n if (tempNormal.z === 1) {\n max.z = pos.z;\n } else if (tempNormal.z === -1) {\n min.z = pos.z;\n }\n }\n\n updateBoundingSphereRadius() {\n this.boundingSphereRadius = Number.MAX_VALUE;\n }\n\n}\nconst tempNormal = new Vec3();\n\n/**\n * Heightfield shape class. Height data is given as an array. These data points are spread out evenly with a given distance.\n * @todo Should be possible to use along all axes, not just y\n * @todo should be possible to scale along all axes\n * @todo Refactor elementSize to elementSizeX and elementSizeY\n *\n * @example\n * // Generate some height data (y-values).\n * const data = []\n * for (let i = 0; i < 1000; i++) {\n * const y = 0.5 * Math.cos(0.2 * i)\n * data.push(y)\n * }\n *\n * // Create the heightfield shape\n * const heightfieldShape = new CANNON.Heightfield(data, {\n * elementSize: 1 // Distance between the data points in X and Y directions\n * })\n * const heightfieldBody = new CANNON.Body({ shape: heightfieldShape })\n * world.addBody(heightfieldBody)\n */\nclass Heightfield extends Shape {\n /**\n * An array of numbers, or height values, that are spread out along the x axis.\n */\n\n /**\n * Max value of the data points in the data array.\n */\n\n /**\n * Minimum value of the data points in the data array.\n */\n\n /**\n * World spacing between the data points in X and Y direction.\n * @todo elementSizeX and Y\n * @default 1\n */\n\n /**\n * @default true\n */\n\n /**\n * @param data An array of numbers, or height values, that are spread out along the x axis.\n */\n constructor(data, options = {}) {\n options = Utils.defaults(options, {\n maxValue: null,\n minValue: null,\n elementSize: 1\n });\n super({\n type: Shape.types.HEIGHTFIELD\n });\n this.data = void 0;\n this.maxValue = void 0;\n this.minValue = void 0;\n this.elementSize = void 0;\n this.cacheEnabled = void 0;\n this.pillarConvex = void 0;\n this.pillarOffset = void 0;\n this._cachedPillars = void 0;\n this.data = data;\n this.maxValue = options.maxValue;\n this.minValue = options.minValue;\n this.elementSize = options.elementSize;\n\n if (options.minValue === null) {\n this.updateMinValue();\n }\n\n if (options.maxValue === null) {\n this.updateMaxValue();\n }\n\n this.cacheEnabled = true;\n this.pillarConvex = new ConvexPolyhedron();\n this.pillarOffset = new Vec3();\n this.updateBoundingSphereRadius(); // \"i_j_isUpper\" => { convex: ..., offset: ... }\n // for example:\n // _cachedPillars[\"0_2_1\"]\n\n this._cachedPillars = {};\n }\n /**\n * Call whenever you change the data array.\n */\n\n\n update() {\n this._cachedPillars = {};\n }\n /**\n * Update the `minValue` property\n */\n\n\n updateMinValue() {\n const data = this.data;\n let minValue = data[0][0];\n\n for (let i = 0; i !== data.length; i++) {\n for (let j = 0; j !== data[i].length; j++) {\n const v = data[i][j];\n\n if (v < minValue) {\n minValue = v;\n }\n }\n }\n\n this.minValue = minValue;\n }\n /**\n * Update the `maxValue` property\n */\n\n\n updateMaxValue() {\n const data = this.data;\n let maxValue = data[0][0];\n\n for (let i = 0; i !== data.length; i++) {\n for (let j = 0; j !== data[i].length; j++) {\n const v = data[i][j];\n\n if (v > maxValue) {\n maxValue = v;\n }\n }\n }\n\n this.maxValue = maxValue;\n }\n /**\n * Set the height value at an index. Don't forget to update maxValue and minValue after you're done.\n */\n\n\n setHeightValueAtIndex(xi, yi, value) {\n const data = this.data;\n data[xi][yi] = value; // Invalidate cache\n\n this.clearCachedConvexTrianglePillar(xi, yi, false);\n\n if (xi > 0) {\n this.clearCachedConvexTrianglePillar(xi - 1, yi, true);\n this.clearCachedConvexTrianglePillar(xi - 1, yi, false);\n }\n\n if (yi > 0) {\n this.clearCachedConvexTrianglePillar(xi, yi - 1, true);\n this.clearCachedConvexTrianglePillar(xi, yi - 1, false);\n }\n\n if (yi > 0 && xi > 0) {\n this.clearCachedConvexTrianglePillar(xi - 1, yi - 1, true);\n }\n }\n /**\n * Get max/min in a rectangle in the matrix data\n * @param result An array to store the results in.\n * @return The result array, if it was passed in. Minimum will be at position 0 and max at 1.\n */\n\n\n getRectMinMax(iMinX, iMinY, iMaxX, iMaxY, result = []) {\n // Get max and min of the data\n const data = this.data; // Set first value\n\n let max = this.minValue;\n\n for (let i = iMinX; i <= iMaxX; i++) {\n for (let j = iMinY; j <= iMaxY; j++) {\n const height = data[i][j];\n\n if (height > max) {\n max = height;\n }\n }\n }\n\n result[0] = this.minValue;\n result[1] = max;\n }\n /**\n * Get the index of a local position on the heightfield. The indexes indicate the rectangles, so if your terrain is made of N x N height data points, you will have rectangle indexes ranging from 0 to N-1.\n * @param result Two-element array\n * @param clamp If the position should be clamped to the heightfield edge.\n */\n\n\n getIndexOfPosition(x, y, result, clamp) {\n // Get the index of the data points to test against\n const w = this.elementSize;\n const data = this.data;\n let xi = Math.floor(x / w);\n let yi = Math.floor(y / w);\n result[0] = xi;\n result[1] = yi;\n\n if (clamp) {\n // Clamp index to edges\n if (xi < 0) {\n xi = 0;\n }\n\n if (yi < 0) {\n yi = 0;\n }\n\n if (xi >= data.length - 1) {\n xi = data.length - 1;\n }\n\n if (yi >= data[0].length - 1) {\n yi = data[0].length - 1;\n }\n } // Bail out if we are out of the terrain\n\n\n if (xi < 0 || yi < 0 || xi >= data.length - 1 || yi >= data[0].length - 1) {\n return false;\n }\n\n return true;\n }\n\n getTriangleAt(x, y, edgeClamp, a, b, c) {\n const idx = getHeightAt_idx;\n this.getIndexOfPosition(x, y, idx, edgeClamp);\n let xi = idx[0];\n let yi = idx[1];\n const data = this.data;\n\n if (edgeClamp) {\n xi = Math.min(data.length - 2, Math.max(0, xi));\n yi = Math.min(data[0].length - 2, Math.max(0, yi));\n }\n\n const elementSize = this.elementSize;\n const lowerDist2 = (x / elementSize - xi) ** 2 + (y / elementSize - yi) ** 2;\n const upperDist2 = (x / elementSize - (xi + 1)) ** 2 + (y / elementSize - (yi + 1)) ** 2;\n const upper = lowerDist2 > upperDist2;\n this.getTriangle(xi, yi, upper, a, b, c);\n return upper;\n }\n\n getNormalAt(x, y, edgeClamp, result) {\n const a = getNormalAt_a;\n const b = getNormalAt_b;\n const c = getNormalAt_c;\n const e0 = getNormalAt_e0;\n const e1 = getNormalAt_e1;\n this.getTriangleAt(x, y, edgeClamp, a, b, c);\n b.vsub(a, e0);\n c.vsub(a, e1);\n e0.cross(e1, result);\n result.normalize();\n }\n /**\n * Get an AABB of a square in the heightfield\n * @param xi\n * @param yi\n * @param result\n */\n\n\n getAabbAtIndex(xi, yi, {\n lowerBound,\n upperBound\n }) {\n const data = this.data;\n const elementSize = this.elementSize;\n lowerBound.set(xi * elementSize, yi * elementSize, data[xi][yi]);\n upperBound.set((xi + 1) * elementSize, (yi + 1) * elementSize, data[xi + 1][yi + 1]);\n }\n /**\n * Get the height in the heightfield at a given position\n */\n\n\n getHeightAt(x, y, edgeClamp) {\n const data = this.data;\n const a = getHeightAt_a;\n const b = getHeightAt_b;\n const c = getHeightAt_c;\n const idx = getHeightAt_idx;\n this.getIndexOfPosition(x, y, idx, edgeClamp);\n let xi = idx[0];\n let yi = idx[1];\n\n if (edgeClamp) {\n xi = Math.min(data.length - 2, Math.max(0, xi));\n yi = Math.min(data[0].length - 2, Math.max(0, yi));\n }\n\n const upper = this.getTriangleAt(x, y, edgeClamp, a, b, c);\n barycentricWeights(x, y, a.x, a.y, b.x, b.y, c.x, c.y, getHeightAt_weights);\n const w = getHeightAt_weights;\n\n if (upper) {\n // Top triangle verts\n return data[xi + 1][yi + 1] * w.x + data[xi][yi + 1] * w.y + data[xi + 1][yi] * w.z;\n } else {\n // Top triangle verts\n return data[xi][yi] * w.x + data[xi + 1][yi] * w.y + data[xi][yi + 1] * w.z;\n }\n }\n\n getCacheConvexTrianglePillarKey(xi, yi, getUpperTriangle) {\n return xi + \"_\" + yi + \"_\" + (getUpperTriangle ? 1 : 0);\n }\n\n getCachedConvexTrianglePillar(xi, yi, getUpperTriangle) {\n return this._cachedPillars[this.getCacheConvexTrianglePillarKey(xi, yi, getUpperTriangle)];\n }\n\n setCachedConvexTrianglePillar(xi, yi, getUpperTriangle, convex, offset) {\n this._cachedPillars[this.getCacheConvexTrianglePillarKey(xi, yi, getUpperTriangle)] = {\n convex,\n offset\n };\n }\n\n clearCachedConvexTrianglePillar(xi, yi, getUpperTriangle) {\n delete this._cachedPillars[this.getCacheConvexTrianglePillarKey(xi, yi, getUpperTriangle)];\n }\n /**\n * Get a triangle from the heightfield\n */\n\n\n getTriangle(xi, yi, upper, a, b, c) {\n const data = this.data;\n const elementSize = this.elementSize;\n\n if (upper) {\n // Top triangle verts\n a.set((xi + 1) * elementSize, (yi + 1) * elementSize, data[xi + 1][yi + 1]);\n b.set(xi * elementSize, (yi + 1) * elementSize, data[xi][yi + 1]);\n c.set((xi + 1) * elementSize, yi * elementSize, data[xi + 1][yi]);\n } else {\n // Top triangle verts\n a.set(xi * elementSize, yi * elementSize, data[xi][yi]);\n b.set((xi + 1) * elementSize, yi * elementSize, data[xi + 1][yi]);\n c.set(xi * elementSize, (yi + 1) * elementSize, data[xi][yi + 1]);\n }\n }\n /**\n * Get a triangle in the terrain in the form of a triangular convex shape.\n */\n\n\n getConvexTrianglePillar(xi, yi, getUpperTriangle) {\n let result = this.pillarConvex;\n let offsetResult = this.pillarOffset;\n\n if (this.cacheEnabled) {\n const data = this.getCachedConvexTrianglePillar(xi, yi, getUpperTriangle);\n\n if (data) {\n this.pillarConvex = data.convex;\n this.pillarOffset = data.offset;\n return;\n }\n\n result = new ConvexPolyhedron();\n offsetResult = new Vec3();\n this.pillarConvex = result;\n this.pillarOffset = offsetResult;\n }\n\n const data = this.data;\n const elementSize = this.elementSize;\n const faces = result.faces; // Reuse verts if possible\n\n result.vertices.length = 6;\n\n for (let i = 0; i < 6; i++) {\n if (!result.vertices[i]) {\n result.vertices[i] = new Vec3();\n }\n } // Reuse faces if possible\n\n\n faces.length = 5;\n\n for (let i = 0; i < 5; i++) {\n if (!faces[i]) {\n faces[i] = [];\n }\n }\n\n const verts = result.vertices;\n const h = (Math.min(data[xi][yi], data[xi + 1][yi], data[xi][yi + 1], data[xi + 1][yi + 1]) - this.minValue) / 2 + this.minValue;\n\n if (!getUpperTriangle) {\n // Center of the triangle pillar - all polygons are given relative to this one\n offsetResult.set((xi + 0.25) * elementSize, // sort of center of a triangle\n (yi + 0.25) * elementSize, h // vertical center\n ); // Top triangle verts\n\n verts[0].set(-0.25 * elementSize, -0.25 * elementSize, data[xi][yi] - h);\n verts[1].set(0.75 * elementSize, -0.25 * elementSize, data[xi + 1][yi] - h);\n verts[2].set(-0.25 * elementSize, 0.75 * elementSize, data[xi][yi + 1] - h); // bottom triangle verts\n\n verts[3].set(-0.25 * elementSize, -0.25 * elementSize, -Math.abs(h) - 1);\n verts[4].set(0.75 * elementSize, -0.25 * elementSize, -Math.abs(h) - 1);\n verts[5].set(-0.25 * elementSize, 0.75 * elementSize, -Math.abs(h) - 1); // top triangle\n\n faces[0][0] = 0;\n faces[0][1] = 1;\n faces[0][2] = 2; // bottom triangle\n\n faces[1][0] = 5;\n faces[1][1] = 4;\n faces[1][2] = 3; // -x facing quad\n\n faces[2][0] = 0;\n faces[2][1] = 2;\n faces[2][2] = 5;\n faces[2][3] = 3; // -y facing quad\n\n faces[3][0] = 1;\n faces[3][1] = 0;\n faces[3][2] = 3;\n faces[3][3] = 4; // +xy facing quad\n\n faces[4][0] = 4;\n faces[4][1] = 5;\n faces[4][2] = 2;\n faces[4][3] = 1;\n } else {\n // Center of the triangle pillar - all polygons are given relative to this one\n offsetResult.set((xi + 0.75) * elementSize, // sort of center of a triangle\n (yi + 0.75) * elementSize, h // vertical center\n ); // Top triangle verts\n\n verts[0].set(0.25 * elementSize, 0.25 * elementSize, data[xi + 1][yi + 1] - h);\n verts[1].set(-0.75 * elementSize, 0.25 * elementSize, data[xi][yi + 1] - h);\n verts[2].set(0.25 * elementSize, -0.75 * elementSize, data[xi + 1][yi] - h); // bottom triangle verts\n\n verts[3].set(0.25 * elementSize, 0.25 * elementSize, -Math.abs(h) - 1);\n verts[4].set(-0.75 * elementSize, 0.25 * elementSize, -Math.abs(h) - 1);\n verts[5].set(0.25 * elementSize, -0.75 * elementSize, -Math.abs(h) - 1); // Top triangle\n\n faces[0][0] = 0;\n faces[0][1] = 1;\n faces[0][2] = 2; // bottom triangle\n\n faces[1][0] = 5;\n faces[1][1] = 4;\n faces[1][2] = 3; // +x facing quad\n\n faces[2][0] = 2;\n faces[2][1] = 5;\n faces[2][2] = 3;\n faces[2][3] = 0; // +y facing quad\n\n faces[3][0] = 3;\n faces[3][1] = 4;\n faces[3][2] = 1;\n faces[3][3] = 0; // -xy facing quad\n\n faces[4][0] = 1;\n faces[4][1] = 4;\n faces[4][2] = 5;\n faces[4][3] = 2;\n }\n\n result.computeNormals();\n result.computeEdges();\n result.updateBoundingSphereRadius();\n this.setCachedConvexTrianglePillar(xi, yi, getUpperTriangle, result, offsetResult);\n }\n\n calculateLocalInertia(mass, target = new Vec3()) {\n target.set(0, 0, 0);\n return target;\n }\n\n volume() {\n return (// The terrain is infinite\n Number.MAX_VALUE\n );\n }\n\n calculateWorldAABB(pos, quat, min, max) {\n /** @TODO do it properly */\n min.set(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n max.set(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n }\n\n updateBoundingSphereRadius() {\n // Use the bounding box of the min/max values\n const data = this.data;\n const s = this.elementSize;\n this.boundingSphereRadius = new Vec3(data.length * s, data[0].length * s, Math.max(Math.abs(this.maxValue), Math.abs(this.minValue))).length();\n }\n /**\n * Sets the height values from an image. Currently only supported in browser.\n */\n\n\n setHeightsFromImage(image, scale) {\n const {\n x,\n z,\n y\n } = scale;\n const canvas = document.createElement('canvas');\n canvas.width = image.width;\n canvas.height = image.height;\n const context = canvas.getContext('2d');\n context.drawImage(image, 0, 0);\n const imageData = context.getImageData(0, 0, image.width, image.height);\n const matrix = this.data;\n matrix.length = 0;\n this.elementSize = Math.abs(x) / imageData.width;\n\n for (let i = 0; i < imageData.height; i++) {\n const row = [];\n\n for (let j = 0; j < imageData.width; j++) {\n const a = imageData.data[(i * imageData.height + j) * 4];\n const b = imageData.data[(i * imageData.height + j) * 4 + 1];\n const c = imageData.data[(i * imageData.height + j) * 4 + 2];\n const height = (a + b + c) / 4 / 255 * z;\n\n if (x < 0) {\n row.push(height);\n } else {\n row.unshift(height);\n }\n }\n\n if (y < 0) {\n matrix.unshift(row);\n } else {\n matrix.push(row);\n }\n }\n\n this.updateMaxValue();\n this.updateMinValue();\n this.update();\n }\n\n}\nconst getHeightAt_idx = [];\nconst getHeightAt_weights = new Vec3();\nconst getHeightAt_a = new Vec3();\nconst getHeightAt_b = new Vec3();\nconst getHeightAt_c = new Vec3();\nconst getNormalAt_a = new Vec3();\nconst getNormalAt_b = new Vec3();\nconst getNormalAt_c = new Vec3();\nconst getNormalAt_e0 = new Vec3();\nconst getNormalAt_e1 = new Vec3(); // from https://en.wikipedia.org/wiki/Barycentric_coordinate_system\n\nfunction barycentricWeights(x, y, ax, ay, bx, by, cx, cy, result) {\n result.x = ((by - cy) * (x - cx) + (cx - bx) * (y - cy)) / ((by - cy) * (ax - cx) + (cx - bx) * (ay - cy));\n result.y = ((cy - ay) * (x - cx) + (ax - cx) * (y - cy)) / ((by - cy) * (ax - cx) + (cx - bx) * (ay - cy));\n result.z = 1 - result.x - result.y;\n}\n\n/**\n * OctreeNode\n */\nclass OctreeNode {\n /** The root node */\n\n /** Boundary of this node */\n\n /** Contained data at the current node level */\n\n /** Children to this node */\n constructor(options = {}) {\n this.root = void 0;\n this.aabb = void 0;\n this.data = void 0;\n this.children = void 0;\n this.root = options.root || null;\n this.aabb = options.aabb ? options.aabb.clone() : new AABB();\n this.data = [];\n this.children = [];\n }\n /**\n * reset\n */\n\n\n reset() {\n this.children.length = this.data.length = 0;\n }\n /**\n * Insert data into this node\n * @return True if successful, otherwise false\n */\n\n\n insert(aabb, elementData, level = 0) {\n const nodeData = this.data; // Ignore objects that do not belong in this node\n\n if (!this.aabb.contains(aabb)) {\n return false; // object cannot be added\n }\n\n const children = this.children;\n const maxDepth = this.maxDepth || this.root.maxDepth;\n\n if (level < maxDepth) {\n // Subdivide if there are no children yet\n let subdivided = false;\n\n if (!children.length) {\n this.subdivide();\n subdivided = true;\n } // add to whichever node will accept it\n\n\n for (let i = 0; i !== 8; i++) {\n if (children[i].insert(aabb, elementData, level + 1)) {\n return true;\n }\n }\n\n if (subdivided) {\n // No children accepted! Might as well just remove em since they contain none\n children.length = 0;\n }\n } // Too deep, or children didnt want it. add it in current node\n\n\n nodeData.push(elementData);\n return true;\n }\n /**\n * Create 8 equally sized children nodes and put them in the `children` array.\n */\n\n\n subdivide() {\n const aabb = this.aabb;\n const l = aabb.lowerBound;\n const u = aabb.upperBound;\n const children = this.children;\n children.push(new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(0, 0, 0)\n })\n }), new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(1, 0, 0)\n })\n }), new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(1, 1, 0)\n })\n }), new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(1, 1, 1)\n })\n }), new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(0, 1, 1)\n })\n }), new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(0, 0, 1)\n })\n }), new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(1, 0, 1)\n })\n }), new OctreeNode({\n aabb: new AABB({\n lowerBound: new Vec3(0, 1, 0)\n })\n }));\n u.vsub(l, halfDiagonal);\n halfDiagonal.scale(0.5, halfDiagonal);\n const root = this.root || this;\n\n for (let i = 0; i !== 8; i++) {\n const child = children[i]; // Set current node as root\n\n child.root = root; // Compute bounds\n\n const lowerBound = child.aabb.lowerBound;\n lowerBound.x *= halfDiagonal.x;\n lowerBound.y *= halfDiagonal.y;\n lowerBound.z *= halfDiagonal.z;\n lowerBound.vadd(l, lowerBound); // Upper bound is always lower bound + halfDiagonal\n\n lowerBound.vadd(halfDiagonal, child.aabb.upperBound);\n }\n }\n /**\n * Get all data, potentially within an AABB\n * @return The \"result\" object\n */\n\n\n aabbQuery(aabb, result) {\n this.data; // abort if the range does not intersect this node\n // if (!this.aabb.overlaps(aabb)){\n // return result;\n // }\n // Add objects at this level\n // Array.prototype.push.apply(result, nodeData);\n // Add child data\n // @todo unwrap recursion into a queue / loop, that's faster in JS\n\n this.children; // for (let i = 0, N = this.children.length; i !== N; i++) {\n // children[i].aabbQuery(aabb, result);\n // }\n\n const queue = [this];\n\n while (queue.length) {\n const node = queue.pop();\n\n if (node.aabb.overlaps(aabb)) {\n Array.prototype.push.apply(result, node.data);\n }\n\n Array.prototype.push.apply(queue, node.children);\n }\n\n return result;\n }\n /**\n * Get all data, potentially intersected by a ray.\n * @return The \"result\" object\n */\n\n\n rayQuery(ray, treeTransform, result) {\n // Use aabb query for now.\n\n /** @todo implement real ray query which needs less lookups */\n ray.getAABB(tmpAABB);\n tmpAABB.toLocalFrame(treeTransform, tmpAABB);\n this.aabbQuery(tmpAABB, result);\n return result;\n }\n /**\n * removeEmptyNodes\n */\n\n\n removeEmptyNodes() {\n for (let i = this.children.length - 1; i >= 0; i--) {\n this.children[i].removeEmptyNodes();\n\n if (!this.children[i].children.length && !this.children[i].data.length) {\n this.children.splice(i, 1);\n }\n }\n }\n\n}\n/**\n * Octree\n */\n\n\nclass Octree extends OctreeNode {\n /**\n * Maximum subdivision depth\n * @default 8\n */\n\n /**\n * @param aabb The total AABB of the tree\n */\n constructor(aabb, options = {}) {\n super({\n root: null,\n aabb\n });\n this.maxDepth = void 0;\n this.maxDepth = typeof options.maxDepth !== 'undefined' ? options.maxDepth : 8;\n }\n\n}\nconst halfDiagonal = new Vec3();\nconst tmpAABB = new AABB();\n\n/**\n * Trimesh.\n * @example\n * // How to make a mesh with a single triangle\n * const vertices = [\n * 0, 0, 0, // vertex 0\n * 1, 0, 0, // vertex 1\n * 0, 1, 0 // vertex 2\n * ]\n * const indices = [\n * 0, 1, 2 // triangle 0\n * ]\n * const trimeshShape = new CANNON.Trimesh(vertices, indices)\n */\nclass Trimesh extends Shape {\n /**\n * vertices\n */\n\n /**\n * Array of integers, indicating which vertices each triangle consists of. The length of this array is thus 3 times the number of triangles.\n */\n\n /**\n * The normals data.\n */\n\n /**\n * The local AABB of the mesh.\n */\n\n /**\n * References to vertex pairs, making up all unique edges in the trimesh.\n */\n\n /**\n * Local scaling of the mesh. Use .setScale() to set it.\n */\n\n /**\n * The indexed triangles. Use .updateTree() to update it.\n */\n constructor(vertices, indices) {\n super({\n type: Shape.types.TRIMESH\n });\n this.vertices = void 0;\n this.indices = void 0;\n this.normals = void 0;\n this.aabb = void 0;\n this.edges = void 0;\n this.scale = void 0;\n this.tree = void 0;\n this.vertices = new Float32Array(vertices);\n this.indices = new Int16Array(indices);\n this.normals = new Float32Array(indices.length);\n this.aabb = new AABB();\n this.edges = null;\n this.scale = new Vec3(1, 1, 1);\n this.tree = new Octree();\n this.updateEdges();\n this.updateNormals();\n this.updateAABB();\n this.updateBoundingSphereRadius();\n this.updateTree();\n }\n /**\n * updateTree\n */\n\n\n updateTree() {\n const tree = this.tree;\n tree.reset();\n tree.aabb.copy(this.aabb);\n const scale = this.scale; // The local mesh AABB is scaled, but the octree AABB should be unscaled\n\n tree.aabb.lowerBound.x *= 1 / scale.x;\n tree.aabb.lowerBound.y *= 1 / scale.y;\n tree.aabb.lowerBound.z *= 1 / scale.z;\n tree.aabb.upperBound.x *= 1 / scale.x;\n tree.aabb.upperBound.y *= 1 / scale.y;\n tree.aabb.upperBound.z *= 1 / scale.z; // Insert all triangles\n\n const triangleAABB = new AABB();\n const a = new Vec3();\n const b = new Vec3();\n const c = new Vec3();\n const points = [a, b, c];\n\n for (let i = 0; i < this.indices.length / 3; i++) {\n //this.getTriangleVertices(i, a, b, c);\n // Get unscaled triangle verts\n const i3 = i * 3;\n\n this._getUnscaledVertex(this.indices[i3], a);\n\n this._getUnscaledVertex(this.indices[i3 + 1], b);\n\n this._getUnscaledVertex(this.indices[i3 + 2], c);\n\n triangleAABB.setFromPoints(points);\n tree.insert(triangleAABB, i);\n }\n\n tree.removeEmptyNodes();\n }\n /**\n * Get triangles in a local AABB from the trimesh.\n * @param result An array of integers, referencing the queried triangles.\n */\n\n\n getTrianglesInAABB(aabb, result) {\n unscaledAABB.copy(aabb); // Scale it to local\n\n const scale = this.scale;\n const isx = scale.x;\n const isy = scale.y;\n const isz = scale.z;\n const l = unscaledAABB.lowerBound;\n const u = unscaledAABB.upperBound;\n l.x /= isx;\n l.y /= isy;\n l.z /= isz;\n u.x /= isx;\n u.y /= isy;\n u.z /= isz;\n return this.tree.aabbQuery(unscaledAABB, result);\n }\n /**\n * setScale\n */\n\n\n setScale(scale) {\n const wasUniform = this.scale.x === this.scale.y && this.scale.y === this.scale.z;\n const isUniform = scale.x === scale.y && scale.y === scale.z;\n\n if (!(wasUniform && isUniform)) {\n // Non-uniform scaling. Need to update normals.\n this.updateNormals();\n }\n\n this.scale.copy(scale);\n this.updateAABB();\n this.updateBoundingSphereRadius();\n }\n /**\n * Compute the normals of the faces. Will save in the `.normals` array.\n */\n\n\n updateNormals() {\n const n = computeNormals_n; // Generate normals\n\n const normals = this.normals;\n\n for (let i = 0; i < this.indices.length / 3; i++) {\n const i3 = i * 3;\n const a = this.indices[i3];\n const b = this.indices[i3 + 1];\n const c = this.indices[i3 + 2];\n this.getVertex(a, va);\n this.getVertex(b, vb);\n this.getVertex(c, vc);\n Trimesh.computeNormal(vb, va, vc, n);\n normals[i3] = n.x;\n normals[i3 + 1] = n.y;\n normals[i3 + 2] = n.z;\n }\n }\n /**\n * Update the `.edges` property\n */\n\n\n updateEdges() {\n const edges = {};\n\n const add = (a, b) => {\n const key = a < b ? a + \"_\" + b : b + \"_\" + a;\n edges[key] = true;\n };\n\n for (let i = 0; i < this.indices.length / 3; i++) {\n const i3 = i * 3;\n const a = this.indices[i3];\n const b = this.indices[i3 + 1];\n const c = this.indices[i3 + 2];\n add(a, b);\n add(b, c);\n add(c, a);\n }\n\n const keys = Object.keys(edges);\n this.edges = new Int16Array(keys.length * 2);\n\n for (let i = 0; i < keys.length; i++) {\n const indices = keys[i].split('_');\n this.edges[2 * i] = parseInt(indices[0], 10);\n this.edges[2 * i + 1] = parseInt(indices[1], 10);\n }\n }\n /**\n * Get an edge vertex\n * @param firstOrSecond 0 or 1, depending on which one of the vertices you need.\n * @param vertexStore Where to store the result\n */\n\n\n getEdgeVertex(edgeIndex, firstOrSecond, vertexStore) {\n const vertexIndex = this.edges[edgeIndex * 2 + (firstOrSecond ? 1 : 0)];\n this.getVertex(vertexIndex, vertexStore);\n }\n /**\n * Get a vector along an edge.\n */\n\n\n getEdgeVector(edgeIndex, vectorStore) {\n const va = getEdgeVector_va;\n const vb = getEdgeVector_vb;\n this.getEdgeVertex(edgeIndex, 0, va);\n this.getEdgeVertex(edgeIndex, 1, vb);\n vb.vsub(va, vectorStore);\n }\n /**\n * Get face normal given 3 vertices\n */\n\n\n static computeNormal(va, vb, vc, target) {\n vb.vsub(va, ab);\n vc.vsub(vb, cb);\n cb.cross(ab, target);\n\n if (!target.isZero()) {\n target.normalize();\n }\n }\n /**\n * Get vertex i.\n * @return The \"out\" vector object\n */\n\n\n getVertex(i, out) {\n const scale = this.scale;\n\n this._getUnscaledVertex(i, out);\n\n out.x *= scale.x;\n out.y *= scale.y;\n out.z *= scale.z;\n return out;\n }\n /**\n * Get raw vertex i\n * @return The \"out\" vector object\n */\n\n\n _getUnscaledVertex(i, out) {\n const i3 = i * 3;\n const vertices = this.vertices;\n return out.set(vertices[i3], vertices[i3 + 1], vertices[i3 + 2]);\n }\n /**\n * Get a vertex from the trimesh,transformed by the given position and quaternion.\n * @return The \"out\" vector object\n */\n\n\n getWorldVertex(i, pos, quat, out) {\n this.getVertex(i, out);\n Transform.pointToWorldFrame(pos, quat, out, out);\n return out;\n }\n /**\n * Get the three vertices for triangle i.\n */\n\n\n getTriangleVertices(i, a, b, c) {\n const i3 = i * 3;\n this.getVertex(this.indices[i3], a);\n this.getVertex(this.indices[i3 + 1], b);\n this.getVertex(this.indices[i3 + 2], c);\n }\n /**\n * Compute the normal of triangle i.\n * @return The \"target\" vector object\n */\n\n\n getNormal(i, target) {\n const i3 = i * 3;\n return target.set(this.normals[i3], this.normals[i3 + 1], this.normals[i3 + 2]);\n }\n /**\n * @return The \"target\" vector object\n */\n\n\n calculateLocalInertia(mass, target) {\n // Approximate with box inertia\n // Exact inertia calculation is overkill, but see http://geometrictools.com/Documentation/PolyhedralMassProperties.pdf for the correct way to do it\n this.computeLocalAABB(cli_aabb);\n const x = cli_aabb.upperBound.x - cli_aabb.lowerBound.x;\n const y = cli_aabb.upperBound.y - cli_aabb.lowerBound.y;\n const z = cli_aabb.upperBound.z - cli_aabb.lowerBound.z;\n return target.set(1.0 / 12.0 * mass * (2 * y * 2 * y + 2 * z * 2 * z), 1.0 / 12.0 * mass * (2 * x * 2 * x + 2 * z * 2 * z), 1.0 / 12.0 * mass * (2 * y * 2 * y + 2 * x * 2 * x));\n }\n /**\n * Compute the local AABB for the trimesh\n */\n\n\n computeLocalAABB(aabb) {\n const l = aabb.lowerBound;\n const u = aabb.upperBound;\n const n = this.vertices.length;\n this.vertices;\n const v = computeLocalAABB_worldVert;\n this.getVertex(0, v);\n l.copy(v);\n u.copy(v);\n\n for (let i = 0; i !== n; i++) {\n this.getVertex(i, v);\n\n if (v.x < l.x) {\n l.x = v.x;\n } else if (v.x > u.x) {\n u.x = v.x;\n }\n\n if (v.y < l.y) {\n l.y = v.y;\n } else if (v.y > u.y) {\n u.y = v.y;\n }\n\n if (v.z < l.z) {\n l.z = v.z;\n } else if (v.z > u.z) {\n u.z = v.z;\n }\n }\n }\n /**\n * Update the `.aabb` property\n */\n\n\n updateAABB() {\n this.computeLocalAABB(this.aabb);\n }\n /**\n * Will update the `.boundingSphereRadius` property\n */\n\n\n updateBoundingSphereRadius() {\n // Assume points are distributed with local (0,0,0) as center\n let max2 = 0;\n const vertices = this.vertices;\n const v = new Vec3();\n\n for (let i = 0, N = vertices.length / 3; i !== N; i++) {\n this.getVertex(i, v);\n const norm2 = v.lengthSquared();\n\n if (norm2 > max2) {\n max2 = norm2;\n }\n }\n\n this.boundingSphereRadius = Math.sqrt(max2);\n }\n /**\n * calculateWorldAABB\n */\n\n\n calculateWorldAABB(pos, quat, min, max) {\n /*\n const n = this.vertices.length / 3,\n verts = this.vertices;\n const minx,miny,minz,maxx,maxy,maxz;\n const v = tempWorldVertex;\n for(let i=0; i maxx || maxx===undefined){\n maxx = v.x;\n }\n if (v.y < miny || miny===undefined){\n miny = v.y;\n } else if(v.y > maxy || maxy===undefined){\n maxy = v.y;\n }\n if (v.z < minz || minz===undefined){\n minz = v.z;\n } else if(v.z > maxz || maxz===undefined){\n maxz = v.z;\n }\n }\n min.set(minx,miny,minz);\n max.set(maxx,maxy,maxz);\n */\n // Faster approximation using local AABB\n const frame = calculateWorldAABB_frame;\n const result = calculateWorldAABB_aabb;\n frame.position = pos;\n frame.quaternion = quat;\n this.aabb.toWorldFrame(frame, result);\n min.copy(result.lowerBound);\n max.copy(result.upperBound);\n }\n /**\n * Get approximate volume\n */\n\n\n volume() {\n return 4.0 * Math.PI * this.boundingSphereRadius / 3.0;\n }\n /**\n * Create a Trimesh instance, shaped as a torus.\n */\n\n\n static createTorus(radius = 1, tube = 0.5, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2) {\n const vertices = [];\n const indices = [];\n\n for (let j = 0; j <= radialSegments; j++) {\n for (let i = 0; i <= tubularSegments; i++) {\n const u = i / tubularSegments * arc;\n const v = j / radialSegments * Math.PI * 2;\n const x = (radius + tube * Math.cos(v)) * Math.cos(u);\n const y = (radius + tube * Math.cos(v)) * Math.sin(u);\n const z = tube * Math.sin(v);\n vertices.push(x, y, z);\n }\n }\n\n for (let j = 1; j <= radialSegments; j++) {\n for (let i = 1; i <= tubularSegments; i++) {\n const a = (tubularSegments + 1) * j + i - 1;\n const b = (tubularSegments + 1) * (j - 1) + i - 1;\n const c = (tubularSegments + 1) * (j - 1) + i;\n const d = (tubularSegments + 1) * j + i;\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n\n return new Trimesh(vertices, indices);\n }\n\n}\nconst computeNormals_n = new Vec3();\nconst unscaledAABB = new AABB();\nconst getEdgeVector_va = new Vec3();\nconst getEdgeVector_vb = new Vec3();\nconst cb = new Vec3();\nconst ab = new Vec3();\nconst va = new Vec3();\nconst vb = new Vec3();\nconst vc = new Vec3();\nconst cli_aabb = new AABB();\nconst computeLocalAABB_worldVert = new Vec3();\nconst calculateWorldAABB_frame = new Transform();\nconst calculateWorldAABB_aabb = new AABB();\n\n/**\n * Constraint equation solver base class.\n */\nclass Solver {\n /**\n * All equations to be solved\n */\n\n /**\n * @todo remove useless constructor\n */\n constructor() {\n this.equations = void 0;\n this.equations = [];\n }\n /**\n * Should be implemented in subclasses!\n * @todo use abstract\n * @return number of iterations performed\n */\n\n\n solve(dt, world) {\n return (// Should return the number of iterations done!\n 0\n );\n }\n /**\n * Add an equation\n */\n\n\n addEquation(eq) {\n if (eq.enabled && !eq.bi.isTrigger && !eq.bj.isTrigger) {\n this.equations.push(eq);\n }\n }\n /**\n * Remove an equation\n */\n\n\n removeEquation(eq) {\n const eqs = this.equations;\n const i = eqs.indexOf(eq);\n\n if (i !== -1) {\n eqs.splice(i, 1);\n }\n }\n /**\n * Add all equations\n */\n\n\n removeAllEquations() {\n this.equations.length = 0;\n }\n\n}\n\n/**\n * Constraint equation Gauss-Seidel solver.\n * @todo The spook parameters should be specified for each constraint, not globally.\n * @see https://www8.cs.umu.se/kurser/5DV058/VT09/lectures/spooknotes.pdf\n */\nclass GSSolver extends Solver {\n /**\n * The number of solver iterations determines quality of the constraints in the world.\n * The more iterations, the more correct simulation. More iterations need more computations though. If you have a large gravity force in your world, you will need more iterations.\n */\n\n /**\n * When tolerance is reached, the system is assumed to be converged.\n */\n\n /**\n * @todo remove useless constructor\n */\n constructor() {\n super();\n this.iterations = void 0;\n this.tolerance = void 0;\n this.iterations = 10;\n this.tolerance = 1e-7;\n }\n /**\n * Solve\n * @return number of iterations performed\n */\n\n\n solve(dt, world) {\n let iter = 0;\n const maxIter = this.iterations;\n const tolSquared = this.tolerance * this.tolerance;\n const equations = this.equations;\n const Neq = equations.length;\n const bodies = world.bodies;\n const Nbodies = bodies.length;\n const h = dt;\n let B;\n let invC;\n let deltalambda;\n let deltalambdaTot;\n let GWlambda;\n let lambdaj; // Update solve mass\n\n if (Neq !== 0) {\n for (let i = 0; i !== Nbodies; i++) {\n bodies[i].updateSolveMassProperties();\n }\n } // Things that do not change during iteration can be computed once\n\n\n const invCs = GSSolver_solve_invCs;\n const Bs = GSSolver_solve_Bs;\n const lambda = GSSolver_solve_lambda;\n invCs.length = Neq;\n Bs.length = Neq;\n lambda.length = Neq;\n\n for (let i = 0; i !== Neq; i++) {\n const c = equations[i];\n lambda[i] = 0.0;\n Bs[i] = c.computeB(h);\n invCs[i] = 1.0 / c.computeC();\n }\n\n if (Neq !== 0) {\n // Reset vlambda\n for (let i = 0; i !== Nbodies; i++) {\n const b = bodies[i];\n const vlambda = b.vlambda;\n const wlambda = b.wlambda;\n vlambda.set(0, 0, 0);\n wlambda.set(0, 0, 0);\n } // Iterate over equations\n\n\n for (iter = 0; iter !== maxIter; iter++) {\n // Accumulate the total error for each iteration.\n deltalambdaTot = 0.0;\n\n for (let j = 0; j !== Neq; j++) {\n const c = equations[j]; // Compute iteration\n\n B = Bs[j];\n invC = invCs[j];\n lambdaj = lambda[j];\n GWlambda = c.computeGWlambda();\n deltalambda = invC * (B - GWlambda - c.eps * lambdaj); // Clamp if we are not within the min/max interval\n\n if (lambdaj + deltalambda < c.minForce) {\n deltalambda = c.minForce - lambdaj;\n } else if (lambdaj + deltalambda > c.maxForce) {\n deltalambda = c.maxForce - lambdaj;\n }\n\n lambda[j] += deltalambda;\n deltalambdaTot += deltalambda > 0.0 ? deltalambda : -deltalambda; // abs(deltalambda)\n\n c.addToWlambda(deltalambda);\n } // If the total error is small enough - stop iterate\n\n\n if (deltalambdaTot * deltalambdaTot < tolSquared) {\n break;\n }\n } // Add result to velocity\n\n\n for (let i = 0; i !== Nbodies; i++) {\n const b = bodies[i];\n const v = b.velocity;\n const w = b.angularVelocity;\n b.vlambda.vmul(b.linearFactor, b.vlambda);\n v.vadd(b.vlambda, v);\n b.wlambda.vmul(b.angularFactor, b.wlambda);\n w.vadd(b.wlambda, w);\n } // Set the `.multiplier` property of each equation\n\n\n let l = equations.length;\n const invDt = 1 / h;\n\n while (l--) {\n equations[l].multiplier = lambda[l] * invDt;\n }\n }\n\n return iter;\n }\n\n} // Just temporary number holders that we want to reuse each iteration.\n\nconst GSSolver_solve_lambda = [];\nconst GSSolver_solve_invCs = [];\nconst GSSolver_solve_Bs = [];\n\n/**\n * Splits the equations into islands and solves them independently. Can improve performance.\n */\nclass SplitSolver extends Solver {\n /**\n * The number of solver iterations determines quality of the constraints in the world. The more iterations, the more correct simulation. More iterations need more computations though. If you have a large gravity force in your world, you will need more iterations.\n */\n\n /**\n * When tolerance is reached, the system is assumed to be converged.\n */\n\n /** subsolver */\n constructor(subsolver) {\n super();\n this.iterations = void 0;\n this.tolerance = void 0;\n this.subsolver = void 0;\n this.nodes = void 0;\n this.nodePool = void 0;\n this.iterations = 10;\n this.tolerance = 1e-7;\n this.subsolver = subsolver;\n this.nodes = [];\n this.nodePool = []; // Create needed nodes, reuse if possible\n\n while (this.nodePool.length < 128) {\n this.nodePool.push(this.createNode());\n }\n }\n /**\n * createNode\n */\n\n\n createNode() {\n return {\n body: null,\n children: [],\n eqs: [],\n visited: false\n };\n }\n /**\n * Solve the subsystems\n * @return number of iterations performed\n */\n\n\n solve(dt, world) {\n const nodes = SplitSolver_solve_nodes;\n const nodePool = this.nodePool;\n const bodies = world.bodies;\n const equations = this.equations;\n const Neq = equations.length;\n const Nbodies = bodies.length;\n const subsolver = this.subsolver; // Create needed nodes, reuse if possible\n\n while (nodePool.length < Nbodies) {\n nodePool.push(this.createNode());\n }\n\n nodes.length = Nbodies;\n\n for (let i = 0; i < Nbodies; i++) {\n nodes[i] = nodePool[i];\n } // Reset node values\n\n\n for (let i = 0; i !== Nbodies; i++) {\n const node = nodes[i];\n node.body = bodies[i];\n node.children.length = 0;\n node.eqs.length = 0;\n node.visited = false;\n }\n\n for (let k = 0; k !== Neq; k++) {\n const eq = equations[k];\n const i = bodies.indexOf(eq.bi);\n const j = bodies.indexOf(eq.bj);\n const ni = nodes[i];\n const nj = nodes[j];\n ni.children.push(nj);\n ni.eqs.push(eq);\n nj.children.push(ni);\n nj.eqs.push(eq);\n }\n\n let child;\n let n = 0;\n let eqs = SplitSolver_solve_eqs;\n subsolver.tolerance = this.tolerance;\n subsolver.iterations = this.iterations;\n const dummyWorld = SplitSolver_solve_dummyWorld;\n\n while (child = getUnvisitedNode(nodes)) {\n eqs.length = 0;\n dummyWorld.bodies.length = 0;\n bfs(child, visitFunc, dummyWorld.bodies, eqs);\n const Neqs = eqs.length;\n eqs = eqs.sort(sortById);\n\n for (let i = 0; i !== Neqs; i++) {\n subsolver.addEquation(eqs[i]);\n }\n\n subsolver.solve(dt, dummyWorld);\n subsolver.removeAllEquations();\n n++;\n }\n\n return n;\n }\n\n} // Returns the number of subsystems\n\nconst SplitSolver_solve_nodes = []; // All allocated node objects\n\nconst SplitSolver_solve_eqs = []; // Temp array\n\nconst SplitSolver_solve_dummyWorld = {\n bodies: []\n}; // Temp object\n\nconst STATIC = Body.STATIC;\n\nfunction getUnvisitedNode(nodes) {\n const Nnodes = nodes.length;\n\n for (let i = 0; i !== Nnodes; i++) {\n const node = nodes[i];\n\n if (!node.visited && !(node.body.type & STATIC)) {\n return node;\n }\n }\n\n return false;\n}\n\nconst queue = [];\n\nfunction bfs(root, visitFunc, bds, eqs) {\n queue.push(root);\n root.visited = true;\n visitFunc(root, bds, eqs);\n\n while (queue.length) {\n const node = queue.pop(); // Loop over unvisited child nodes\n\n let child;\n\n while (child = getUnvisitedNode(node.children)) {\n child.visited = true;\n visitFunc(child, bds, eqs);\n queue.push(child);\n }\n }\n}\n\nfunction visitFunc(node, bds, eqs) {\n bds.push(node.body);\n const Neqs = node.eqs.length;\n\n for (let i = 0; i !== Neqs; i++) {\n const eq = node.eqs[i];\n\n if (!eqs.includes(eq)) {\n eqs.push(eq);\n }\n }\n}\n\nfunction sortById(a, b) {\n return b.id - a.id;\n}\n\n/**\n * For pooling objects that can be reused.\n */\nclass Pool {\n constructor() {\n this.objects = [];\n this.type = Object;\n }\n\n /**\n * Release an object after use\n */\n release(...args) {\n const Nargs = args.length;\n\n for (let i = 0; i !== Nargs; i++) {\n this.objects.push(args[i]);\n }\n\n return this;\n }\n /**\n * Get an object\n */\n\n\n get() {\n if (this.objects.length === 0) {\n return this.constructObject();\n } else {\n return this.objects.pop();\n }\n }\n /**\n * Construct an object. Should be implemented in each subclass.\n */\n\n\n constructObject() {\n throw new Error('constructObject() not implemented in this Pool subclass yet!');\n }\n /**\n * @return Self, for chaining\n */\n\n\n resize(size) {\n const objects = this.objects;\n\n while (objects.length > size) {\n objects.pop();\n }\n\n while (objects.length < size) {\n objects.push(this.constructObject());\n }\n\n return this;\n }\n\n}\n\n/**\n * Vec3Pool\n */\n\nclass Vec3Pool extends Pool {\n constructor(...args) {\n super(...args);\n this.type = Vec3;\n }\n\n /**\n * Construct a vector\n */\n constructObject() {\n return new Vec3();\n }\n\n}\n\nlet _COLLISION_TYPES$sphe, _COLLISION_TYPES$sphe2, _COLLISION_TYPES$boxB, _COLLISION_TYPES$sphe3, _COLLISION_TYPES$plan, _COLLISION_TYPES$conv, _COLLISION_TYPES$sphe4, _COLLISION_TYPES$plan2, _COLLISION_TYPES$boxC, _COLLISION_TYPES$sphe5, _COLLISION_TYPES$boxH, _COLLISION_TYPES$conv2, _COLLISION_TYPES$sphe6, _COLLISION_TYPES$plan3, _COLLISION_TYPES$boxP, _COLLISION_TYPES$conv3, _COLLISION_TYPES$cyli, _COLLISION_TYPES$sphe7, _COLLISION_TYPES$plan4, _COLLISION_TYPES$boxC2, _COLLISION_TYPES$conv4, _COLLISION_TYPES$heig, _COLLISION_TYPES$part, _COLLISION_TYPES$sphe8, _COLLISION_TYPES$plan5;\n// Naming rule: based of the order in SHAPE_TYPES,\n// the first part of the method is formed by the\n// shape type that comes before, in the second part\n// there is the shape type that comes after in the SHAPE_TYPES list\nconst COLLISION_TYPES = {\n sphereSphere: Shape.types.SPHERE,\n spherePlane: Shape.types.SPHERE | Shape.types.PLANE,\n boxBox: Shape.types.BOX | Shape.types.BOX,\n sphereBox: Shape.types.SPHERE | Shape.types.BOX,\n planeBox: Shape.types.PLANE | Shape.types.BOX,\n convexConvex: Shape.types.CONVEXPOLYHEDRON,\n sphereConvex: Shape.types.SPHERE | Shape.types.CONVEXPOLYHEDRON,\n planeConvex: Shape.types.PLANE | Shape.types.CONVEXPOLYHEDRON,\n boxConvex: Shape.types.BOX | Shape.types.CONVEXPOLYHEDRON,\n sphereHeightfield: Shape.types.SPHERE | Shape.types.HEIGHTFIELD,\n boxHeightfield: Shape.types.BOX | Shape.types.HEIGHTFIELD,\n convexHeightfield: Shape.types.CONVEXPOLYHEDRON | Shape.types.HEIGHTFIELD,\n sphereParticle: Shape.types.PARTICLE | Shape.types.SPHERE,\n planeParticle: Shape.types.PLANE | Shape.types.PARTICLE,\n boxParticle: Shape.types.BOX | Shape.types.PARTICLE,\n convexParticle: Shape.types.PARTICLE | Shape.types.CONVEXPOLYHEDRON,\n cylinderCylinder: Shape.types.CYLINDER,\n sphereCylinder: Shape.types.SPHERE | Shape.types.CYLINDER,\n planeCylinder: Shape.types.PLANE | Shape.types.CYLINDER,\n boxCylinder: Shape.types.BOX | Shape.types.CYLINDER,\n convexCylinder: Shape.types.CONVEXPOLYHEDRON | Shape.types.CYLINDER,\n heightfieldCylinder: Shape.types.HEIGHTFIELD | Shape.types.CYLINDER,\n particleCylinder: Shape.types.PARTICLE | Shape.types.CYLINDER,\n sphereTrimesh: Shape.types.SPHERE | Shape.types.TRIMESH,\n planeTrimesh: Shape.types.PLANE | Shape.types.TRIMESH\n};\n_COLLISION_TYPES$sphe = COLLISION_TYPES.sphereSphere;\n_COLLISION_TYPES$sphe2 = COLLISION_TYPES.spherePlane;\n_COLLISION_TYPES$boxB = COLLISION_TYPES.boxBox;\n_COLLISION_TYPES$sphe3 = COLLISION_TYPES.sphereBox;\n_COLLISION_TYPES$plan = COLLISION_TYPES.planeBox;\n_COLLISION_TYPES$conv = COLLISION_TYPES.convexConvex;\n_COLLISION_TYPES$sphe4 = COLLISION_TYPES.sphereConvex;\n_COLLISION_TYPES$plan2 = COLLISION_TYPES.planeConvex;\n_COLLISION_TYPES$boxC = COLLISION_TYPES.boxConvex;\n_COLLISION_TYPES$sphe5 = COLLISION_TYPES.sphereHeightfield;\n_COLLISION_TYPES$boxH = COLLISION_TYPES.boxHeightfield;\n_COLLISION_TYPES$conv2 = COLLISION_TYPES.convexHeightfield;\n_COLLISION_TYPES$sphe6 = COLLISION_TYPES.sphereParticle;\n_COLLISION_TYPES$plan3 = COLLISION_TYPES.planeParticle;\n_COLLISION_TYPES$boxP = COLLISION_TYPES.boxParticle;\n_COLLISION_TYPES$conv3 = COLLISION_TYPES.convexParticle;\n_COLLISION_TYPES$cyli = COLLISION_TYPES.cylinderCylinder;\n_COLLISION_TYPES$sphe7 = COLLISION_TYPES.sphereCylinder;\n_COLLISION_TYPES$plan4 = COLLISION_TYPES.planeCylinder;\n_COLLISION_TYPES$boxC2 = COLLISION_TYPES.boxCylinder;\n_COLLISION_TYPES$conv4 = COLLISION_TYPES.convexCylinder;\n_COLLISION_TYPES$heig = COLLISION_TYPES.heightfieldCylinder;\n_COLLISION_TYPES$part = COLLISION_TYPES.particleCylinder;\n_COLLISION_TYPES$sphe8 = COLLISION_TYPES.sphereTrimesh;\n_COLLISION_TYPES$plan5 = COLLISION_TYPES.planeTrimesh;\n\n/**\n * Helper class for the World. Generates ContactEquations.\n * @todo Sphere-ConvexPolyhedron contacts\n * @todo Contact reduction\n * @todo should move methods to prototype\n */\nclass Narrowphase {\n /**\n * Internal storage of pooled contact points.\n */\n\n /**\n * Pooled vectors.\n */\n get [_COLLISION_TYPES$sphe]() {\n return this.sphereSphere;\n }\n\n get [_COLLISION_TYPES$sphe2]() {\n return this.spherePlane;\n }\n\n get [_COLLISION_TYPES$boxB]() {\n return this.boxBox;\n }\n\n get [_COLLISION_TYPES$sphe3]() {\n return this.sphereBox;\n }\n\n get [_COLLISION_TYPES$plan]() {\n return this.planeBox;\n }\n\n get [_COLLISION_TYPES$conv]() {\n return this.convexConvex;\n }\n\n get [_COLLISION_TYPES$sphe4]() {\n return this.sphereConvex;\n }\n\n get [_COLLISION_TYPES$plan2]() {\n return this.planeConvex;\n }\n\n get [_COLLISION_TYPES$boxC]() {\n return this.boxConvex;\n }\n\n get [_COLLISION_TYPES$sphe5]() {\n return this.sphereHeightfield;\n }\n\n get [_COLLISION_TYPES$boxH]() {\n return this.boxHeightfield;\n }\n\n get [_COLLISION_TYPES$conv2]() {\n return this.convexHeightfield;\n }\n\n get [_COLLISION_TYPES$sphe6]() {\n return this.sphereParticle;\n }\n\n get [_COLLISION_TYPES$plan3]() {\n return this.planeParticle;\n }\n\n get [_COLLISION_TYPES$boxP]() {\n return this.boxParticle;\n }\n\n get [_COLLISION_TYPES$conv3]() {\n return this.convexParticle;\n }\n\n get [_COLLISION_TYPES$cyli]() {\n return this.convexConvex;\n }\n\n get [_COLLISION_TYPES$sphe7]() {\n return this.sphereConvex;\n }\n\n get [_COLLISION_TYPES$plan4]() {\n return this.planeConvex;\n }\n\n get [_COLLISION_TYPES$boxC2]() {\n return this.boxConvex;\n }\n\n get [_COLLISION_TYPES$conv4]() {\n return this.convexConvex;\n }\n\n get [_COLLISION_TYPES$heig]() {\n return this.heightfieldCylinder;\n }\n\n get [_COLLISION_TYPES$part]() {\n return this.particleCylinder;\n }\n\n get [_COLLISION_TYPES$sphe8]() {\n return this.sphereTrimesh;\n }\n\n get [_COLLISION_TYPES$plan5]() {\n return this.planeTrimesh;\n } // get [COLLISION_TYPES.convexTrimesh]() {\n // return this.convexTrimesh\n // }\n\n\n constructor(world) {\n this.contactPointPool = void 0;\n this.frictionEquationPool = void 0;\n this.result = void 0;\n this.frictionResult = void 0;\n this.v3pool = void 0;\n this.world = void 0;\n this.currentContactMaterial = void 0;\n this.enableFrictionReduction = void 0;\n this.contactPointPool = [];\n this.frictionEquationPool = [];\n this.result = [];\n this.frictionResult = [];\n this.v3pool = new Vec3Pool();\n this.world = world;\n this.currentContactMaterial = world.defaultContactMaterial;\n this.enableFrictionReduction = false;\n }\n /**\n * Make a contact object, by using the internal pool or creating a new one.\n */\n\n\n createContactEquation(bi, bj, si, sj, overrideShapeA, overrideShapeB) {\n let c;\n\n if (this.contactPointPool.length) {\n c = this.contactPointPool.pop();\n c.bi = bi;\n c.bj = bj;\n } else {\n c = new ContactEquation(bi, bj);\n }\n\n c.enabled = bi.collisionResponse && bj.collisionResponse && si.collisionResponse && sj.collisionResponse;\n const cm = this.currentContactMaterial;\n c.restitution = cm.restitution;\n c.setSpookParams(cm.contactEquationStiffness, cm.contactEquationRelaxation, this.world.dt);\n const matA = si.material || bi.material;\n const matB = sj.material || bj.material;\n\n if (matA && matB && matA.restitution >= 0 && matB.restitution >= 0) {\n c.restitution = matA.restitution * matB.restitution;\n }\n\n c.si = overrideShapeA || si;\n c.sj = overrideShapeB || sj;\n return c;\n }\n\n createFrictionEquationsFromContact(contactEquation, outArray) {\n const bodyA = contactEquation.bi;\n const bodyB = contactEquation.bj;\n const shapeA = contactEquation.si;\n const shapeB = contactEquation.sj;\n const world = this.world;\n const cm = this.currentContactMaterial; // If friction or restitution were specified in the material, use them\n\n let friction = cm.friction;\n const matA = shapeA.material || bodyA.material;\n const matB = shapeB.material || bodyB.material;\n\n if (matA && matB && matA.friction >= 0 && matB.friction >= 0) {\n friction = matA.friction * matB.friction;\n }\n\n if (friction > 0) {\n // Create 2 tangent equations\n const mug = friction * world.gravity.length();\n let reducedMass = bodyA.invMass + bodyB.invMass;\n\n if (reducedMass > 0) {\n reducedMass = 1 / reducedMass;\n }\n\n const pool = this.frictionEquationPool;\n const c1 = pool.length ? pool.pop() : new FrictionEquation(bodyA, bodyB, mug * reducedMass);\n const c2 = pool.length ? pool.pop() : new FrictionEquation(bodyA, bodyB, mug * reducedMass);\n c1.bi = c2.bi = bodyA;\n c1.bj = c2.bj = bodyB;\n c1.minForce = c2.minForce = -mug * reducedMass;\n c1.maxForce = c2.maxForce = mug * reducedMass; // Copy over the relative vectors\n\n c1.ri.copy(contactEquation.ri);\n c1.rj.copy(contactEquation.rj);\n c2.ri.copy(contactEquation.ri);\n c2.rj.copy(contactEquation.rj); // Construct tangents\n\n contactEquation.ni.tangents(c1.t, c2.t); // Set spook params\n\n c1.setSpookParams(cm.frictionEquationStiffness, cm.frictionEquationRelaxation, world.dt);\n c2.setSpookParams(cm.frictionEquationStiffness, cm.frictionEquationRelaxation, world.dt);\n c1.enabled = c2.enabled = contactEquation.enabled;\n outArray.push(c1, c2);\n return true;\n }\n\n return false;\n }\n /**\n * Take the average N latest contact point on the plane.\n */\n\n\n createFrictionFromAverage(numContacts) {\n // The last contactEquation\n let c = this.result[this.result.length - 1]; // Create the result: two \"average\" friction equations\n\n if (!this.createFrictionEquationsFromContact(c, this.frictionResult) || numContacts === 1) {\n return;\n }\n\n const f1 = this.frictionResult[this.frictionResult.length - 2];\n const f2 = this.frictionResult[this.frictionResult.length - 1];\n averageNormal.setZero();\n averageContactPointA.setZero();\n averageContactPointB.setZero();\n const bodyA = c.bi;\n c.bj;\n\n for (let i = 0; i !== numContacts; i++) {\n c = this.result[this.result.length - 1 - i];\n\n if (c.bi !== bodyA) {\n averageNormal.vadd(c.ni, averageNormal);\n averageContactPointA.vadd(c.ri, averageContactPointA);\n averageContactPointB.vadd(c.rj, averageContactPointB);\n } else {\n averageNormal.vsub(c.ni, averageNormal);\n averageContactPointA.vadd(c.rj, averageContactPointA);\n averageContactPointB.vadd(c.ri, averageContactPointB);\n }\n }\n\n const invNumContacts = 1 / numContacts;\n averageContactPointA.scale(invNumContacts, f1.ri);\n averageContactPointB.scale(invNumContacts, f1.rj);\n f2.ri.copy(f1.ri); // Should be the same\n\n f2.rj.copy(f1.rj);\n averageNormal.normalize();\n averageNormal.tangents(f1.t, f2.t); // return eq;\n }\n /**\n * Generate all contacts between a list of body pairs\n * @param p1 Array of body indices\n * @param p2 Array of body indices\n * @param result Array to store generated contacts\n * @param oldcontacts Optional. Array of reusable contact objects\n */\n\n\n getContacts(p1, p2, world, result, oldcontacts, frictionResult, frictionPool) {\n // Save old contact objects\n this.contactPointPool = oldcontacts;\n this.frictionEquationPool = frictionPool;\n this.result = result;\n this.frictionResult = frictionResult;\n const qi = tmpQuat1;\n const qj = tmpQuat2;\n const xi = tmpVec1;\n const xj = tmpVec2;\n\n for (let k = 0, N = p1.length; k !== N; k++) {\n // Get current collision bodies\n const bi = p1[k];\n const bj = p2[k]; // Get contact material\n\n let bodyContactMaterial = null;\n\n if (bi.material && bj.material) {\n bodyContactMaterial = world.getContactMaterial(bi.material, bj.material) || null;\n }\n\n const justTest = bi.type & Body.KINEMATIC && bj.type & Body.STATIC || bi.type & Body.STATIC && bj.type & Body.KINEMATIC || bi.type & Body.KINEMATIC && bj.type & Body.KINEMATIC;\n\n for (let i = 0; i < bi.shapes.length; i++) {\n bi.quaternion.mult(bi.shapeOrientations[i], qi);\n bi.quaternion.vmult(bi.shapeOffsets[i], xi);\n xi.vadd(bi.position, xi);\n const si = bi.shapes[i];\n\n for (let j = 0; j < bj.shapes.length; j++) {\n // Compute world transform of shapes\n bj.quaternion.mult(bj.shapeOrientations[j], qj);\n bj.quaternion.vmult(bj.shapeOffsets[j], xj);\n xj.vadd(bj.position, xj);\n const sj = bj.shapes[j];\n\n if (!(si.collisionFilterMask & sj.collisionFilterGroup && sj.collisionFilterMask & si.collisionFilterGroup)) {\n continue;\n }\n\n if (xi.distanceTo(xj) > si.boundingSphereRadius + sj.boundingSphereRadius) {\n continue;\n } // Get collision material\n\n\n let shapeContactMaterial = null;\n\n if (si.material && sj.material) {\n shapeContactMaterial = world.getContactMaterial(si.material, sj.material) || null;\n }\n\n this.currentContactMaterial = shapeContactMaterial || bodyContactMaterial || world.defaultContactMaterial; // Get contacts\n\n const resolverIndex = si.type | sj.type;\n const resolver = this[resolverIndex];\n\n if (resolver) {\n let retval = false; // TO DO: investigate why sphereParticle and convexParticle\n // resolvers expect si and sj shapes to be in reverse order\n // (i.e. larger integer value type first instead of smaller first)\n\n if (si.type < sj.type) {\n retval = resolver.call(this, si, sj, xi, xj, qi, qj, bi, bj, si, sj, justTest);\n } else {\n retval = resolver.call(this, sj, si, xj, xi, qj, qi, bj, bi, si, sj, justTest);\n }\n\n if (retval && justTest) {\n // Register overlap\n world.shapeOverlapKeeper.set(si.id, sj.id);\n world.bodyOverlapKeeper.set(bi.id, bj.id);\n }\n }\n }\n }\n }\n }\n\n sphereSphere(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n if (justTest) {\n return xi.distanceSquared(xj) < (si.radius + sj.radius) ** 2;\n } // We will have only one contact in this case\n\n\n const contactEq = this.createContactEquation(bi, bj, si, sj, rsi, rsj); // Contact normal\n\n xj.vsub(xi, contactEq.ni);\n contactEq.ni.normalize(); // Contact point locations\n\n contactEq.ri.copy(contactEq.ni);\n contactEq.rj.copy(contactEq.ni);\n contactEq.ri.scale(si.radius, contactEq.ri);\n contactEq.rj.scale(-sj.radius, contactEq.rj);\n contactEq.ri.vadd(xi, contactEq.ri);\n contactEq.ri.vsub(bi.position, contactEq.ri);\n contactEq.rj.vadd(xj, contactEq.rj);\n contactEq.rj.vsub(bj.position, contactEq.rj);\n this.result.push(contactEq);\n this.createFrictionEquationsFromContact(contactEq, this.frictionResult);\n }\n\n spherePlane(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n // We will have one contact in this case\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj); // Contact normal\n\n r.ni.set(0, 0, 1);\n qj.vmult(r.ni, r.ni);\n r.ni.negate(r.ni); // body i is the sphere, flip normal\n\n r.ni.normalize(); // Needed?\n // Vector from sphere center to contact point\n\n r.ni.scale(si.radius, r.ri); // Project down sphere on plane\n\n xi.vsub(xj, point_on_plane_to_sphere);\n r.ni.scale(r.ni.dot(point_on_plane_to_sphere), plane_to_sphere_ortho);\n point_on_plane_to_sphere.vsub(plane_to_sphere_ortho, r.rj); // The sphere position projected to plane\n\n if (-point_on_plane_to_sphere.dot(r.ni) <= si.radius) {\n if (justTest) {\n return true;\n } // Make it relative to the body\n\n\n const ri = r.ri;\n const rj = r.rj;\n ri.vadd(xi, ri);\n ri.vsub(bi.position, ri);\n rj.vadd(xj, rj);\n rj.vsub(bj.position, rj);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n\n boxBox(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n si.convexPolyhedronRepresentation.material = si.material;\n sj.convexPolyhedronRepresentation.material = sj.material;\n si.convexPolyhedronRepresentation.collisionResponse = si.collisionResponse;\n sj.convexPolyhedronRepresentation.collisionResponse = sj.collisionResponse;\n return this.convexConvex(si.convexPolyhedronRepresentation, sj.convexPolyhedronRepresentation, xi, xj, qi, qj, bi, bj, si, sj, justTest);\n }\n\n sphereBox(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n const v3pool = this.v3pool; // we refer to the box as body j\n\n const sides = sphereBox_sides;\n xi.vsub(xj, box_to_sphere);\n sj.getSideNormals(sides, qj);\n const R = si.radius;\n\n let found = false; // Store the resulting side penetration info\n\n const side_ns = sphereBox_side_ns;\n const side_ns1 = sphereBox_side_ns1;\n const side_ns2 = sphereBox_side_ns2;\n let side_h = null;\n let side_penetrations = 0;\n let side_dot1 = 0;\n let side_dot2 = 0;\n let side_distance = null;\n\n for (let idx = 0, nsides = sides.length; idx !== nsides && found === false; idx++) {\n // Get the plane side normal (ns)\n const ns = sphereBox_ns;\n ns.copy(sides[idx]);\n const h = ns.length();\n ns.normalize(); // The normal/distance dot product tells which side of the plane we are\n\n const dot = box_to_sphere.dot(ns);\n\n if (dot < h + R && dot > 0) {\n // Intersects plane. Now check the other two dimensions\n const ns1 = sphereBox_ns1;\n const ns2 = sphereBox_ns2;\n ns1.copy(sides[(idx + 1) % 3]);\n ns2.copy(sides[(idx + 2) % 3]);\n const h1 = ns1.length();\n const h2 = ns2.length();\n ns1.normalize();\n ns2.normalize();\n const dot1 = box_to_sphere.dot(ns1);\n const dot2 = box_to_sphere.dot(ns2);\n\n if (dot1 < h1 && dot1 > -h1 && dot2 < h2 && dot2 > -h2) {\n const dist = Math.abs(dot - h - R);\n\n if (side_distance === null || dist < side_distance) {\n side_distance = dist;\n side_dot1 = dot1;\n side_dot2 = dot2;\n side_h = h;\n side_ns.copy(ns);\n side_ns1.copy(ns1);\n side_ns2.copy(ns2);\n side_penetrations++;\n\n if (justTest) {\n return true;\n }\n }\n }\n }\n }\n\n if (side_penetrations) {\n found = true;\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n side_ns.scale(-R, r.ri); // Sphere r\n\n r.ni.copy(side_ns);\n r.ni.negate(r.ni); // Normal should be out of sphere\n\n side_ns.scale(side_h, side_ns);\n side_ns1.scale(side_dot1, side_ns1);\n side_ns.vadd(side_ns1, side_ns);\n side_ns2.scale(side_dot2, side_ns2);\n side_ns.vadd(side_ns2, r.rj); // Make relative to bodies\n\n r.ri.vadd(xi, r.ri);\n r.ri.vsub(bi.position, r.ri);\n r.rj.vadd(xj, r.rj);\n r.rj.vsub(bj.position, r.rj);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n } // Check corners\n\n\n let rj = v3pool.get();\n const sphere_to_corner = sphereBox_sphere_to_corner;\n\n for (let j = 0; j !== 2 && !found; j++) {\n for (let k = 0; k !== 2 && !found; k++) {\n for (let l = 0; l !== 2 && !found; l++) {\n rj.set(0, 0, 0);\n\n if (j) {\n rj.vadd(sides[0], rj);\n } else {\n rj.vsub(sides[0], rj);\n }\n\n if (k) {\n rj.vadd(sides[1], rj);\n } else {\n rj.vsub(sides[1], rj);\n }\n\n if (l) {\n rj.vadd(sides[2], rj);\n } else {\n rj.vsub(sides[2], rj);\n } // World position of corner\n\n\n xj.vadd(rj, sphere_to_corner);\n sphere_to_corner.vsub(xi, sphere_to_corner);\n\n if (sphere_to_corner.lengthSquared() < R * R) {\n if (justTest) {\n return true;\n }\n\n found = true;\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n r.ri.copy(sphere_to_corner);\n r.ri.normalize();\n r.ni.copy(r.ri);\n r.ri.scale(R, r.ri);\n r.rj.copy(rj); // Make relative to bodies\n\n r.ri.vadd(xi, r.ri);\n r.ri.vsub(bi.position, r.ri);\n r.rj.vadd(xj, r.rj);\n r.rj.vsub(bj.position, r.rj);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n }\n }\n\n v3pool.release(rj);\n rj = null; // Check edges\n\n const edgeTangent = v3pool.get();\n const edgeCenter = v3pool.get();\n const r = v3pool.get(); // r = edge center to sphere center\n\n const orthogonal = v3pool.get();\n const dist = v3pool.get();\n const Nsides = sides.length;\n\n for (let j = 0; j !== Nsides && !found; j++) {\n for (let k = 0; k !== Nsides && !found; k++) {\n if (j % 3 !== k % 3) {\n // Get edge tangent\n sides[k].cross(sides[j], edgeTangent);\n edgeTangent.normalize();\n sides[j].vadd(sides[k], edgeCenter);\n r.copy(xi);\n r.vsub(edgeCenter, r);\n r.vsub(xj, r);\n const orthonorm = r.dot(edgeTangent); // distance from edge center to sphere center in the tangent direction\n\n edgeTangent.scale(orthonorm, orthogonal); // Vector from edge center to sphere center in the tangent direction\n // Find the third side orthogonal to this one\n\n let l = 0;\n\n while (l === j % 3 || l === k % 3) {\n l++;\n } // vec from edge center to sphere projected to the plane orthogonal to the edge tangent\n\n\n dist.copy(xi);\n dist.vsub(orthogonal, dist);\n dist.vsub(edgeCenter, dist);\n dist.vsub(xj, dist); // Distances in tangent direction and distance in the plane orthogonal to it\n\n const tdist = Math.abs(orthonorm);\n const ndist = dist.length();\n\n if (tdist < sides[l].length() && ndist < R) {\n if (justTest) {\n return true;\n }\n\n found = true;\n const res = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n edgeCenter.vadd(orthogonal, res.rj); // box rj\n\n res.rj.copy(res.rj);\n dist.negate(res.ni);\n res.ni.normalize();\n res.ri.copy(res.rj);\n res.ri.vadd(xj, res.ri);\n res.ri.vsub(xi, res.ri);\n res.ri.normalize();\n res.ri.scale(R, res.ri); // Make relative to bodies\n\n res.ri.vadd(xi, res.ri);\n res.ri.vsub(bi.position, res.ri);\n res.rj.vadd(xj, res.rj);\n res.rj.vsub(bj.position, res.rj);\n this.result.push(res);\n this.createFrictionEquationsFromContact(res, this.frictionResult);\n }\n }\n }\n }\n\n v3pool.release(edgeTangent, edgeCenter, r, orthogonal, dist);\n }\n\n planeBox(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n sj.convexPolyhedronRepresentation.material = sj.material;\n sj.convexPolyhedronRepresentation.collisionResponse = sj.collisionResponse;\n sj.convexPolyhedronRepresentation.id = sj.id;\n return this.planeConvex(si, sj.convexPolyhedronRepresentation, xi, xj, qi, qj, bi, bj, si, sj, justTest);\n }\n\n convexConvex(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest, faceListA, faceListB) {\n const sepAxis = convexConvex_sepAxis;\n\n if (xi.distanceTo(xj) > si.boundingSphereRadius + sj.boundingSphereRadius) {\n return;\n }\n\n if (si.findSeparatingAxis(sj, xi, qi, xj, qj, sepAxis, faceListA, faceListB)) {\n const res = [];\n const q = convexConvex_q;\n si.clipAgainstHull(xi, qi, sj, xj, qj, sepAxis, -100, 100, res);\n let numContacts = 0;\n\n for (let j = 0; j !== res.length; j++) {\n if (justTest) {\n return true;\n }\n\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n const ri = r.ri;\n const rj = r.rj;\n sepAxis.negate(r.ni);\n res[j].normal.negate(q);\n q.scale(res[j].depth, q);\n res[j].point.vadd(q, ri);\n rj.copy(res[j].point); // Contact points are in world coordinates. Transform back to relative\n\n ri.vsub(xi, ri);\n rj.vsub(xj, rj); // Make relative to bodies\n\n ri.vadd(xi, ri);\n ri.vsub(bi.position, ri);\n rj.vadd(xj, rj);\n rj.vsub(bj.position, rj);\n this.result.push(r);\n numContacts++;\n\n if (!this.enableFrictionReduction) {\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n\n if (this.enableFrictionReduction && numContacts) {\n this.createFrictionFromAverage(numContacts);\n }\n }\n }\n\n sphereConvex(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n const v3pool = this.v3pool;\n xi.vsub(xj, convex_to_sphere);\n const normals = sj.faceNormals;\n const faces = sj.faces;\n const verts = sj.vertices;\n const R = si.radius;\n // return;\n // }\n\n let found = false; // Check corners\n\n for (let i = 0; i !== verts.length; i++) {\n const v = verts[i]; // World position of corner\n\n const worldCorner = sphereConvex_worldCorner;\n qj.vmult(v, worldCorner);\n xj.vadd(worldCorner, worldCorner);\n const sphere_to_corner = sphereConvex_sphereToCorner;\n worldCorner.vsub(xi, sphere_to_corner);\n\n if (sphere_to_corner.lengthSquared() < R * R) {\n if (justTest) {\n return true;\n }\n\n found = true;\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n r.ri.copy(sphere_to_corner);\n r.ri.normalize();\n r.ni.copy(r.ri);\n r.ri.scale(R, r.ri);\n worldCorner.vsub(xj, r.rj); // Should be relative to the body.\n\n r.ri.vadd(xi, r.ri);\n r.ri.vsub(bi.position, r.ri); // Should be relative to the body.\n\n r.rj.vadd(xj, r.rj);\n r.rj.vsub(bj.position, r.rj);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n return;\n }\n } // Check side (plane) intersections\n\n\n for (let i = 0, nfaces = faces.length; i !== nfaces && found === false; i++) {\n const normal = normals[i];\n const face = faces[i]; // Get world-transformed normal of the face\n\n const worldNormal = sphereConvex_worldNormal;\n qj.vmult(normal, worldNormal); // Get a world vertex from the face\n\n const worldPoint = sphereConvex_worldPoint;\n qj.vmult(verts[face[0]], worldPoint);\n worldPoint.vadd(xj, worldPoint); // Get a point on the sphere, closest to the face normal\n\n const worldSpherePointClosestToPlane = sphereConvex_worldSpherePointClosestToPlane;\n worldNormal.scale(-R, worldSpherePointClosestToPlane);\n xi.vadd(worldSpherePointClosestToPlane, worldSpherePointClosestToPlane); // Vector from a face point to the closest point on the sphere\n\n const penetrationVec = sphereConvex_penetrationVec;\n worldSpherePointClosestToPlane.vsub(worldPoint, penetrationVec); // The penetration. Negative value means overlap.\n\n const penetration = penetrationVec.dot(worldNormal);\n const worldPointToSphere = sphereConvex_sphereToWorldPoint;\n xi.vsub(worldPoint, worldPointToSphere);\n\n if (penetration < 0 && worldPointToSphere.dot(worldNormal) > 0) {\n // Intersects plane. Now check if the sphere is inside the face polygon\n const faceVerts = []; // Face vertices, in world coords\n\n for (let j = 0, Nverts = face.length; j !== Nverts; j++) {\n const worldVertex = v3pool.get();\n qj.vmult(verts[face[j]], worldVertex);\n xj.vadd(worldVertex, worldVertex);\n faceVerts.push(worldVertex);\n }\n\n if (pointInPolygon(faceVerts, worldNormal, xi)) {\n // Is the sphere center in the face polygon?\n if (justTest) {\n return true;\n }\n\n found = true;\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n worldNormal.scale(-R, r.ri); // Contact offset, from sphere center to contact\n\n worldNormal.negate(r.ni); // Normal pointing out of sphere\n\n const penetrationVec2 = v3pool.get();\n worldNormal.scale(-penetration, penetrationVec2);\n const penetrationSpherePoint = v3pool.get();\n worldNormal.scale(-R, penetrationSpherePoint); //xi.vsub(xj).vadd(penetrationSpherePoint).vadd(penetrationVec2 , r.rj);\n\n xi.vsub(xj, r.rj);\n r.rj.vadd(penetrationSpherePoint, r.rj);\n r.rj.vadd(penetrationVec2, r.rj); // Should be relative to the body.\n\n r.rj.vadd(xj, r.rj);\n r.rj.vsub(bj.position, r.rj); // Should be relative to the body.\n\n r.ri.vadd(xi, r.ri);\n r.ri.vsub(bi.position, r.ri);\n v3pool.release(penetrationVec2);\n v3pool.release(penetrationSpherePoint);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult); // Release world vertices\n\n for (let j = 0, Nfaceverts = faceVerts.length; j !== Nfaceverts; j++) {\n v3pool.release(faceVerts[j]);\n }\n\n return; // We only expect *one* face contact\n } else {\n // Edge?\n for (let j = 0; j !== face.length; j++) {\n // Get two world transformed vertices\n const v1 = v3pool.get();\n const v2 = v3pool.get();\n qj.vmult(verts[face[(j + 1) % face.length]], v1);\n qj.vmult(verts[face[(j + 2) % face.length]], v2);\n xj.vadd(v1, v1);\n xj.vadd(v2, v2); // Construct edge vector\n\n const edge = sphereConvex_edge;\n v2.vsub(v1, edge); // Construct the same vector, but normalized\n\n const edgeUnit = sphereConvex_edgeUnit;\n edge.unit(edgeUnit); // p is xi projected onto the edge\n\n const p = v3pool.get();\n const v1_to_xi = v3pool.get();\n xi.vsub(v1, v1_to_xi);\n const dot = v1_to_xi.dot(edgeUnit);\n edgeUnit.scale(dot, p);\n p.vadd(v1, p); // Compute a vector from p to the center of the sphere\n\n const xi_to_p = v3pool.get();\n p.vsub(xi, xi_to_p); // Collision if the edge-sphere distance is less than the radius\n // AND if p is in between v1 and v2\n\n if (dot > 0 && dot * dot < edge.lengthSquared() && xi_to_p.lengthSquared() < R * R) {\n // Collision if the edge-sphere distance is less than the radius\n // Edge contact!\n if (justTest) {\n return true;\n }\n\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n p.vsub(xj, r.rj);\n p.vsub(xi, r.ni);\n r.ni.normalize();\n r.ni.scale(R, r.ri); // Should be relative to the body.\n\n r.rj.vadd(xj, r.rj);\n r.rj.vsub(bj.position, r.rj); // Should be relative to the body.\n\n r.ri.vadd(xi, r.ri);\n r.ri.vsub(bi.position, r.ri);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult); // Release world vertices\n\n for (let j = 0, Nfaceverts = faceVerts.length; j !== Nfaceverts; j++) {\n v3pool.release(faceVerts[j]);\n }\n\n v3pool.release(v1);\n v3pool.release(v2);\n v3pool.release(p);\n v3pool.release(xi_to_p);\n v3pool.release(v1_to_xi);\n return;\n }\n\n v3pool.release(v1);\n v3pool.release(v2);\n v3pool.release(p);\n v3pool.release(xi_to_p);\n v3pool.release(v1_to_xi);\n }\n } // Release world vertices\n\n\n for (let j = 0, Nfaceverts = faceVerts.length; j !== Nfaceverts; j++) {\n v3pool.release(faceVerts[j]);\n }\n }\n }\n }\n\n planeConvex(planeShape, convexShape, planePosition, convexPosition, planeQuat, convexQuat, planeBody, convexBody, si, sj, justTest) {\n // Simply return the points behind the plane.\n const worldVertex = planeConvex_v;\n const worldNormal = planeConvex_normal;\n worldNormal.set(0, 0, 1);\n planeQuat.vmult(worldNormal, worldNormal); // Turn normal according to plane orientation\n\n let numContacts = 0;\n const relpos = planeConvex_relpos;\n\n for (let i = 0; i !== convexShape.vertices.length; i++) {\n // Get world convex vertex\n worldVertex.copy(convexShape.vertices[i]);\n convexQuat.vmult(worldVertex, worldVertex);\n convexPosition.vadd(worldVertex, worldVertex);\n worldVertex.vsub(planePosition, relpos);\n const dot = worldNormal.dot(relpos);\n\n if (dot <= 0.0) {\n if (justTest) {\n return true;\n }\n\n const r = this.createContactEquation(planeBody, convexBody, planeShape, convexShape, si, sj); // Get vertex position projected on plane\n\n const projected = planeConvex_projected;\n worldNormal.scale(worldNormal.dot(relpos), projected);\n worldVertex.vsub(projected, projected);\n projected.vsub(planePosition, r.ri); // From plane to vertex projected on plane\n\n r.ni.copy(worldNormal); // Contact normal is the plane normal out from plane\n // rj is now just the vector from the convex center to the vertex\n\n worldVertex.vsub(convexPosition, r.rj); // Make it relative to the body\n\n r.ri.vadd(planePosition, r.ri);\n r.ri.vsub(planeBody.position, r.ri);\n r.rj.vadd(convexPosition, r.rj);\n r.rj.vsub(convexBody.position, r.rj);\n this.result.push(r);\n numContacts++;\n\n if (!this.enableFrictionReduction) {\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n }\n\n if (this.enableFrictionReduction && numContacts) {\n this.createFrictionFromAverage(numContacts);\n }\n }\n\n boxConvex(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n si.convexPolyhedronRepresentation.material = si.material;\n si.convexPolyhedronRepresentation.collisionResponse = si.collisionResponse;\n return this.convexConvex(si.convexPolyhedronRepresentation, sj, xi, xj, qi, qj, bi, bj, si, sj, justTest);\n }\n\n sphereHeightfield(sphereShape, hfShape, spherePos, hfPos, sphereQuat, hfQuat, sphereBody, hfBody, rsi, rsj, justTest) {\n const data = hfShape.data;\n const radius = sphereShape.radius;\n const w = hfShape.elementSize;\n const worldPillarOffset = sphereHeightfield_tmp2; // Get sphere position to heightfield local!\n\n const localSpherePos = sphereHeightfield_tmp1;\n Transform.pointToLocalFrame(hfPos, hfQuat, spherePos, localSpherePos); // Get the index of the data points to test against\n\n let iMinX = Math.floor((localSpherePos.x - radius) / w) - 1;\n let iMaxX = Math.ceil((localSpherePos.x + radius) / w) + 1;\n let iMinY = Math.floor((localSpherePos.y - radius) / w) - 1;\n let iMaxY = Math.ceil((localSpherePos.y + radius) / w) + 1; // Bail out if we are out of the terrain\n\n if (iMaxX < 0 || iMaxY < 0 || iMinX > data.length || iMinY > data[0].length) {\n return;\n } // Clamp index to edges\n\n\n if (iMinX < 0) {\n iMinX = 0;\n }\n\n if (iMaxX < 0) {\n iMaxX = 0;\n }\n\n if (iMinY < 0) {\n iMinY = 0;\n }\n\n if (iMaxY < 0) {\n iMaxY = 0;\n }\n\n if (iMinX >= data.length) {\n iMinX = data.length - 1;\n }\n\n if (iMaxX >= data.length) {\n iMaxX = data.length - 1;\n }\n\n if (iMaxY >= data[0].length) {\n iMaxY = data[0].length - 1;\n }\n\n if (iMinY >= data[0].length) {\n iMinY = data[0].length - 1;\n }\n\n const minMax = [];\n hfShape.getRectMinMax(iMinX, iMinY, iMaxX, iMaxY, minMax);\n const min = minMax[0];\n const max = minMax[1]; // Bail out if we can't touch the bounding height box\n\n if (localSpherePos.z - radius > max || localSpherePos.z + radius < min) {\n return;\n }\n\n const result = this.result;\n\n for (let i = iMinX; i < iMaxX; i++) {\n for (let j = iMinY; j < iMaxY; j++) {\n const numContactsBefore = result.length;\n let intersecting = false; // Lower triangle\n\n hfShape.getConvexTrianglePillar(i, j, false);\n Transform.pointToWorldFrame(hfPos, hfQuat, hfShape.pillarOffset, worldPillarOffset);\n\n if (spherePos.distanceTo(worldPillarOffset) < hfShape.pillarConvex.boundingSphereRadius + sphereShape.boundingSphereRadius) {\n intersecting = this.sphereConvex(sphereShape, hfShape.pillarConvex, spherePos, worldPillarOffset, sphereQuat, hfQuat, sphereBody, hfBody, sphereShape, hfShape, justTest);\n }\n\n if (justTest && intersecting) {\n return true;\n } // Upper triangle\n\n\n hfShape.getConvexTrianglePillar(i, j, true);\n Transform.pointToWorldFrame(hfPos, hfQuat, hfShape.pillarOffset, worldPillarOffset);\n\n if (spherePos.distanceTo(worldPillarOffset) < hfShape.pillarConvex.boundingSphereRadius + sphereShape.boundingSphereRadius) {\n intersecting = this.sphereConvex(sphereShape, hfShape.pillarConvex, spherePos, worldPillarOffset, sphereQuat, hfQuat, sphereBody, hfBody, sphereShape, hfShape, justTest);\n }\n\n if (justTest && intersecting) {\n return true;\n }\n\n const numContacts = result.length - numContactsBefore;\n\n if (numContacts > 2) {\n return;\n }\n /*\n // Skip all but 1\n for (let k = 0; k < numContacts - 1; k++) {\n result.pop();\n }\n */\n\n }\n }\n }\n\n boxHeightfield(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n si.convexPolyhedronRepresentation.material = si.material;\n si.convexPolyhedronRepresentation.collisionResponse = si.collisionResponse;\n return this.convexHeightfield(si.convexPolyhedronRepresentation, sj, xi, xj, qi, qj, bi, bj, si, sj, justTest);\n }\n\n convexHeightfield(convexShape, hfShape, convexPos, hfPos, convexQuat, hfQuat, convexBody, hfBody, rsi, rsj, justTest) {\n const data = hfShape.data;\n const w = hfShape.elementSize;\n const radius = convexShape.boundingSphereRadius;\n const worldPillarOffset = convexHeightfield_tmp2;\n const faceList = convexHeightfield_faceList; // Get sphere position to heightfield local!\n\n const localConvexPos = convexHeightfield_tmp1;\n Transform.pointToLocalFrame(hfPos, hfQuat, convexPos, localConvexPos); // Get the index of the data points to test against\n\n let iMinX = Math.floor((localConvexPos.x - radius) / w) - 1;\n let iMaxX = Math.ceil((localConvexPos.x + radius) / w) + 1;\n let iMinY = Math.floor((localConvexPos.y - radius) / w) - 1;\n let iMaxY = Math.ceil((localConvexPos.y + radius) / w) + 1; // Bail out if we are out of the terrain\n\n if (iMaxX < 0 || iMaxY < 0 || iMinX > data.length || iMinY > data[0].length) {\n return;\n } // Clamp index to edges\n\n\n if (iMinX < 0) {\n iMinX = 0;\n }\n\n if (iMaxX < 0) {\n iMaxX = 0;\n }\n\n if (iMinY < 0) {\n iMinY = 0;\n }\n\n if (iMaxY < 0) {\n iMaxY = 0;\n }\n\n if (iMinX >= data.length) {\n iMinX = data.length - 1;\n }\n\n if (iMaxX >= data.length) {\n iMaxX = data.length - 1;\n }\n\n if (iMaxY >= data[0].length) {\n iMaxY = data[0].length - 1;\n }\n\n if (iMinY >= data[0].length) {\n iMinY = data[0].length - 1;\n }\n\n const minMax = [];\n hfShape.getRectMinMax(iMinX, iMinY, iMaxX, iMaxY, minMax);\n const min = minMax[0];\n const max = minMax[1]; // Bail out if we're cant touch the bounding height box\n\n if (localConvexPos.z - radius > max || localConvexPos.z + radius < min) {\n return;\n }\n\n for (let i = iMinX; i < iMaxX; i++) {\n for (let j = iMinY; j < iMaxY; j++) {\n let intersecting = false; // Lower triangle\n\n hfShape.getConvexTrianglePillar(i, j, false);\n Transform.pointToWorldFrame(hfPos, hfQuat, hfShape.pillarOffset, worldPillarOffset);\n\n if (convexPos.distanceTo(worldPillarOffset) < hfShape.pillarConvex.boundingSphereRadius + convexShape.boundingSphereRadius) {\n intersecting = this.convexConvex(convexShape, hfShape.pillarConvex, convexPos, worldPillarOffset, convexQuat, hfQuat, convexBody, hfBody, null, null, justTest, faceList, null);\n }\n\n if (justTest && intersecting) {\n return true;\n } // Upper triangle\n\n\n hfShape.getConvexTrianglePillar(i, j, true);\n Transform.pointToWorldFrame(hfPos, hfQuat, hfShape.pillarOffset, worldPillarOffset);\n\n if (convexPos.distanceTo(worldPillarOffset) < hfShape.pillarConvex.boundingSphereRadius + convexShape.boundingSphereRadius) {\n intersecting = this.convexConvex(convexShape, hfShape.pillarConvex, convexPos, worldPillarOffset, convexQuat, hfQuat, convexBody, hfBody, null, null, justTest, faceList, null);\n }\n\n if (justTest && intersecting) {\n return true;\n }\n }\n }\n }\n\n sphereParticle(sj, si, xj, xi, qj, qi, bj, bi, rsi, rsj, justTest) {\n // The normal is the unit vector from sphere center to particle center\n const normal = particleSphere_normal;\n normal.set(0, 0, 1);\n xi.vsub(xj, normal);\n const lengthSquared = normal.lengthSquared();\n\n if (lengthSquared <= sj.radius * sj.radius) {\n if (justTest) {\n return true;\n }\n\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n normal.normalize();\n r.rj.copy(normal);\n r.rj.scale(sj.radius, r.rj);\n r.ni.copy(normal); // Contact normal\n\n r.ni.negate(r.ni);\n r.ri.set(0, 0, 0); // Center of particle\n\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n\n planeParticle(sj, si, xj, xi, qj, qi, bj, bi, rsi, rsj, justTest) {\n const normal = particlePlane_normal;\n normal.set(0, 0, 1);\n bj.quaternion.vmult(normal, normal); // Turn normal according to plane orientation\n\n const relpos = particlePlane_relpos;\n xi.vsub(bj.position, relpos);\n const dot = normal.dot(relpos);\n\n if (dot <= 0.0) {\n if (justTest) {\n return true;\n }\n\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n r.ni.copy(normal); // Contact normal is the plane normal\n\n r.ni.negate(r.ni);\n r.ri.set(0, 0, 0); // Center of particle\n // Get particle position projected on plane\n\n const projected = particlePlane_projected;\n normal.scale(normal.dot(xi), projected);\n xi.vsub(projected, projected); //projected.vadd(bj.position,projected);\n // rj is now the projected world position minus plane position\n\n r.rj.copy(projected);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n\n boxParticle(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n si.convexPolyhedronRepresentation.material = si.material;\n si.convexPolyhedronRepresentation.collisionResponse = si.collisionResponse;\n return this.convexParticle(si.convexPolyhedronRepresentation, sj, xi, xj, qi, qj, bi, bj, si, sj, justTest);\n }\n\n convexParticle(sj, si, xj, xi, qj, qi, bj, bi, rsi, rsj, justTest) {\n let penetratedFaceIndex = -1;\n const penetratedFaceNormal = convexParticle_penetratedFaceNormal;\n const worldPenetrationVec = convexParticle_worldPenetrationVec;\n let minPenetration = null;\n\n const local = convexParticle_local;\n local.copy(xi);\n local.vsub(xj, local); // Convert position to relative the convex origin\n\n qj.conjugate(cqj);\n cqj.vmult(local, local);\n\n if (sj.pointIsInside(local)) {\n if (sj.worldVerticesNeedsUpdate) {\n sj.computeWorldVertices(xj, qj);\n }\n\n if (sj.worldFaceNormalsNeedsUpdate) {\n sj.computeWorldFaceNormals(qj);\n } // For each world polygon in the polyhedra\n\n\n for (let i = 0, nfaces = sj.faces.length; i !== nfaces; i++) {\n // Construct world face vertices\n const verts = [sj.worldVertices[sj.faces[i][0]]];\n const normal = sj.worldFaceNormals[i]; // Check how much the particle penetrates the polygon plane.\n\n xi.vsub(verts[0], convexParticle_vertexToParticle);\n const penetration = -normal.dot(convexParticle_vertexToParticle);\n\n if (minPenetration === null || Math.abs(penetration) < Math.abs(minPenetration)) {\n if (justTest) {\n return true;\n }\n\n minPenetration = penetration;\n penetratedFaceIndex = i;\n penetratedFaceNormal.copy(normal);\n }\n }\n\n if (penetratedFaceIndex !== -1) {\n // Setup contact\n const r = this.createContactEquation(bi, bj, si, sj, rsi, rsj);\n penetratedFaceNormal.scale(minPenetration, worldPenetrationVec); // rj is the particle position projected to the face\n\n worldPenetrationVec.vadd(xi, worldPenetrationVec);\n worldPenetrationVec.vsub(xj, worldPenetrationVec);\n r.rj.copy(worldPenetrationVec); //const projectedToFace = xi.vsub(xj).vadd(worldPenetrationVec);\n //projectedToFace.copy(r.rj);\n //qj.vmult(r.rj,r.rj);\n\n penetratedFaceNormal.negate(r.ni); // Contact normal\n\n r.ri.set(0, 0, 0); // Center of particle\n\n const ri = r.ri;\n const rj = r.rj; // Make relative to bodies\n\n ri.vadd(xi, ri);\n ri.vsub(bi.position, ri);\n rj.vadd(xj, rj);\n rj.vsub(bj.position, rj);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n } else {\n console.warn('Point found inside convex, but did not find penetrating face!');\n }\n }\n }\n\n heightfieldCylinder(hfShape, convexShape, hfPos, convexPos, hfQuat, convexQuat, hfBody, convexBody, rsi, rsj, justTest) {\n return this.convexHeightfield(convexShape, hfShape, convexPos, hfPos, convexQuat, hfQuat, convexBody, hfBody, rsi, rsj, justTest);\n }\n\n particleCylinder(si, sj, xi, xj, qi, qj, bi, bj, rsi, rsj, justTest) {\n return this.convexParticle(sj, si, xj, xi, qj, qi, bj, bi, rsi, rsj, justTest);\n }\n\n sphereTrimesh(sphereShape, trimeshShape, spherePos, trimeshPos, sphereQuat, trimeshQuat, sphereBody, trimeshBody, rsi, rsj, justTest) {\n const edgeVertexA = sphereTrimesh_edgeVertexA;\n const edgeVertexB = sphereTrimesh_edgeVertexB;\n const edgeVector = sphereTrimesh_edgeVector;\n const edgeVectorUnit = sphereTrimesh_edgeVectorUnit;\n const localSpherePos = sphereTrimesh_localSpherePos;\n const tmp = sphereTrimesh_tmp;\n const localSphereAABB = sphereTrimesh_localSphereAABB;\n const v2 = sphereTrimesh_v2;\n const relpos = sphereTrimesh_relpos;\n const triangles = sphereTrimesh_triangles; // Convert sphere position to local in the trimesh\n\n Transform.pointToLocalFrame(trimeshPos, trimeshQuat, spherePos, localSpherePos); // Get the aabb of the sphere locally in the trimesh\n\n const sphereRadius = sphereShape.radius;\n localSphereAABB.lowerBound.set(localSpherePos.x - sphereRadius, localSpherePos.y - sphereRadius, localSpherePos.z - sphereRadius);\n localSphereAABB.upperBound.set(localSpherePos.x + sphereRadius, localSpherePos.y + sphereRadius, localSpherePos.z + sphereRadius);\n trimeshShape.getTrianglesInAABB(localSphereAABB, triangles); //for (let i = 0; i < trimeshShape.indices.length / 3; i++) triangles.push(i); // All\n // Vertices\n\n const v = sphereTrimesh_v;\n const radiusSquared = sphereShape.radius * sphereShape.radius;\n\n for (let i = 0; i < triangles.length; i++) {\n for (let j = 0; j < 3; j++) {\n trimeshShape.getVertex(trimeshShape.indices[triangles[i] * 3 + j], v); // Check vertex overlap in sphere\n\n v.vsub(localSpherePos, relpos);\n\n if (relpos.lengthSquared() <= radiusSquared) {\n // Safe up\n v2.copy(v);\n Transform.pointToWorldFrame(trimeshPos, trimeshQuat, v2, v);\n v.vsub(spherePos, relpos);\n\n if (justTest) {\n return true;\n }\n\n let r = this.createContactEquation(sphereBody, trimeshBody, sphereShape, trimeshShape, rsi, rsj);\n r.ni.copy(relpos);\n r.ni.normalize(); // ri is the vector from sphere center to the sphere surface\n\n r.ri.copy(r.ni);\n r.ri.scale(sphereShape.radius, r.ri);\n r.ri.vadd(spherePos, r.ri);\n r.ri.vsub(sphereBody.position, r.ri);\n r.rj.copy(v);\n r.rj.vsub(trimeshBody.position, r.rj); // Store result\n\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n } // Check all edges\n\n\n for (let i = 0; i < triangles.length; i++) {\n for (let j = 0; j < 3; j++) {\n trimeshShape.getVertex(trimeshShape.indices[triangles[i] * 3 + j], edgeVertexA);\n trimeshShape.getVertex(trimeshShape.indices[triangles[i] * 3 + (j + 1) % 3], edgeVertexB);\n edgeVertexB.vsub(edgeVertexA, edgeVector); // Project sphere position to the edge\n\n localSpherePos.vsub(edgeVertexB, tmp);\n const positionAlongEdgeB = tmp.dot(edgeVector);\n localSpherePos.vsub(edgeVertexA, tmp);\n let positionAlongEdgeA = tmp.dot(edgeVector);\n\n if (positionAlongEdgeA > 0 && positionAlongEdgeB < 0) {\n // Now check the orthogonal distance from edge to sphere center\n localSpherePos.vsub(edgeVertexA, tmp);\n edgeVectorUnit.copy(edgeVector);\n edgeVectorUnit.normalize();\n positionAlongEdgeA = tmp.dot(edgeVectorUnit);\n edgeVectorUnit.scale(positionAlongEdgeA, tmp);\n tmp.vadd(edgeVertexA, tmp); // tmp is now the sphere center position projected to the edge, defined locally in the trimesh frame\n\n const dist = tmp.distanceTo(localSpherePos);\n\n if (dist < sphereShape.radius) {\n if (justTest) {\n return true;\n }\n\n const r = this.createContactEquation(sphereBody, trimeshBody, sphereShape, trimeshShape, rsi, rsj);\n tmp.vsub(localSpherePos, r.ni);\n r.ni.normalize();\n r.ni.scale(sphereShape.radius, r.ri);\n r.ri.vadd(spherePos, r.ri);\n r.ri.vsub(sphereBody.position, r.ri);\n Transform.pointToWorldFrame(trimeshPos, trimeshQuat, tmp, tmp);\n tmp.vsub(trimeshBody.position, r.rj);\n Transform.vectorToWorldFrame(trimeshQuat, r.ni, r.ni);\n Transform.vectorToWorldFrame(trimeshQuat, r.ri, r.ri);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n }\n } // Triangle faces\n\n\n const va = sphereTrimesh_va;\n const vb = sphereTrimesh_vb;\n const vc = sphereTrimesh_vc;\n const normal = sphereTrimesh_normal;\n\n for (let i = 0, N = triangles.length; i !== N; i++) {\n trimeshShape.getTriangleVertices(triangles[i], va, vb, vc);\n trimeshShape.getNormal(triangles[i], normal);\n localSpherePos.vsub(va, tmp);\n let dist = tmp.dot(normal);\n normal.scale(dist, tmp);\n localSpherePos.vsub(tmp, tmp); // tmp is now the sphere position projected to the triangle plane\n\n dist = tmp.distanceTo(localSpherePos);\n\n if (Ray.pointInTriangle(tmp, va, vb, vc) && dist < sphereShape.radius) {\n if (justTest) {\n return true;\n }\n\n let r = this.createContactEquation(sphereBody, trimeshBody, sphereShape, trimeshShape, rsi, rsj);\n tmp.vsub(localSpherePos, r.ni);\n r.ni.normalize();\n r.ni.scale(sphereShape.radius, r.ri);\n r.ri.vadd(spherePos, r.ri);\n r.ri.vsub(sphereBody.position, r.ri);\n Transform.pointToWorldFrame(trimeshPos, trimeshQuat, tmp, tmp);\n tmp.vsub(trimeshBody.position, r.rj);\n Transform.vectorToWorldFrame(trimeshQuat, r.ni, r.ni);\n Transform.vectorToWorldFrame(trimeshQuat, r.ri, r.ri);\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n\n triangles.length = 0;\n }\n\n planeTrimesh(planeShape, trimeshShape, planePos, trimeshPos, planeQuat, trimeshQuat, planeBody, trimeshBody, rsi, rsj, justTest) {\n // Make contacts!\n const v = new Vec3();\n const normal = planeTrimesh_normal;\n normal.set(0, 0, 1);\n planeQuat.vmult(normal, normal); // Turn normal according to plane\n\n for (let i = 0; i < trimeshShape.vertices.length / 3; i++) {\n // Get world vertex from trimesh\n trimeshShape.getVertex(i, v); // Safe up\n\n const v2 = new Vec3();\n v2.copy(v);\n Transform.pointToWorldFrame(trimeshPos, trimeshQuat, v2, v); // Check plane side\n\n const relpos = planeTrimesh_relpos;\n v.vsub(planePos, relpos);\n const dot = normal.dot(relpos);\n\n if (dot <= 0.0) {\n if (justTest) {\n return true;\n }\n\n const r = this.createContactEquation(planeBody, trimeshBody, planeShape, trimeshShape, rsi, rsj);\n r.ni.copy(normal); // Contact normal is the plane normal\n // Get vertex position projected on plane\n\n const projected = planeTrimesh_projected;\n normal.scale(relpos.dot(normal), projected);\n v.vsub(projected, projected); // ri is the projected world position minus plane position\n\n r.ri.copy(projected);\n r.ri.vsub(planeBody.position, r.ri);\n r.rj.copy(v);\n r.rj.vsub(trimeshBody.position, r.rj); // Store result\n\n this.result.push(r);\n this.createFrictionEquationsFromContact(r, this.frictionResult);\n }\n }\n } // convexTrimesh(\n // si: ConvexPolyhedron, sj: Trimesh, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion,\n // bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null,\n // faceListA?: number[] | null, faceListB?: number[] | null,\n // ) {\n // const sepAxis = convexConvex_sepAxis;\n // if(xi.distanceTo(xj) > si.boundingSphereRadius + sj.boundingSphereRadius){\n // return;\n // }\n // // Construct a temp hull for each triangle\n // const hullB = new ConvexPolyhedron();\n // hullB.faces = [[0,1,2]];\n // const va = new Vec3();\n // const vb = new Vec3();\n // const vc = new Vec3();\n // hullB.vertices = [\n // va,\n // vb,\n // vc\n // ];\n // for (let i = 0; i < sj.indices.length / 3; i++) {\n // const triangleNormal = new Vec3();\n // sj.getNormal(i, triangleNormal);\n // hullB.faceNormals = [triangleNormal];\n // sj.getTriangleVertices(i, va, vb, vc);\n // let d = si.testSepAxis(triangleNormal, hullB, xi, qi, xj, qj);\n // if(!d){\n // triangleNormal.scale(-1, triangleNormal);\n // d = si.testSepAxis(triangleNormal, hullB, xi, qi, xj, qj);\n // if(!d){\n // continue;\n // }\n // }\n // const res: ConvexPolyhedronContactPoint[] = [];\n // const q = convexConvex_q;\n // si.clipAgainstHull(xi,qi,hullB,xj,qj,triangleNormal,-100,100,res);\n // for(let j = 0; j !== res.length; j++){\n // const r = this.createContactEquation(bi,bj,si,sj,rsi,rsj),\n // ri = r.ri,\n // rj = r.rj;\n // r.ni.copy(triangleNormal);\n // r.ni.negate(r.ni);\n // res[j].normal.negate(q);\n // q.mult(res[j].depth, q);\n // res[j].point.vadd(q, ri);\n // rj.copy(res[j].point);\n // // Contact points are in world coordinates. Transform back to relative\n // ri.vsub(xi,ri);\n // rj.vsub(xj,rj);\n // // Make relative to bodies\n // ri.vadd(xi, ri);\n // ri.vsub(bi.position, ri);\n // rj.vadd(xj, rj);\n // rj.vsub(bj.position, rj);\n // result.push(r);\n // }\n // }\n // }\n\n\n}\nconst averageNormal = new Vec3();\nconst averageContactPointA = new Vec3();\nconst averageContactPointB = new Vec3();\nconst tmpVec1 = new Vec3();\nconst tmpVec2 = new Vec3();\nconst tmpQuat1 = new Quaternion();\nconst tmpQuat2 = new Quaternion();\n\nconst planeTrimesh_normal = new Vec3();\nconst planeTrimesh_relpos = new Vec3();\nconst planeTrimesh_projected = new Vec3();\nconst sphereTrimesh_normal = new Vec3();\nconst sphereTrimesh_relpos = new Vec3();\nconst sphereTrimesh_v = new Vec3();\nconst sphereTrimesh_v2 = new Vec3();\nconst sphereTrimesh_edgeVertexA = new Vec3();\nconst sphereTrimesh_edgeVertexB = new Vec3();\nconst sphereTrimesh_edgeVector = new Vec3();\nconst sphereTrimesh_edgeVectorUnit = new Vec3();\nconst sphereTrimesh_localSpherePos = new Vec3();\nconst sphereTrimesh_tmp = new Vec3();\nconst sphereTrimesh_va = new Vec3();\nconst sphereTrimesh_vb = new Vec3();\nconst sphereTrimesh_vc = new Vec3();\nconst sphereTrimesh_localSphereAABB = new AABB();\nconst sphereTrimesh_triangles = [];\nconst point_on_plane_to_sphere = new Vec3();\nconst plane_to_sphere_ortho = new Vec3(); // See http://bulletphysics.com/Bullet/BulletFull/SphereTriangleDetector_8cpp_source.html\n\nconst pointInPolygon_edge = new Vec3();\nconst pointInPolygon_edge_x_normal = new Vec3();\nconst pointInPolygon_vtp = new Vec3();\n\nfunction pointInPolygon(verts, normal, p) {\n let positiveResult = null;\n const N = verts.length;\n\n for (let i = 0; i !== N; i++) {\n const v = verts[i]; // Get edge to the next vertex\n\n const edge = pointInPolygon_edge;\n verts[(i + 1) % N].vsub(v, edge); // Get cross product between polygon normal and the edge\n\n const edge_x_normal = pointInPolygon_edge_x_normal; //const edge_x_normal = new Vec3();\n\n edge.cross(normal, edge_x_normal); // Get vector between point and current vertex\n\n const vertex_to_p = pointInPolygon_vtp;\n p.vsub(v, vertex_to_p); // This dot product determines which side of the edge the point is\n\n const r = edge_x_normal.dot(vertex_to_p); // If all such dot products have same sign, we are inside the polygon.\n\n if (positiveResult === null || r > 0 && positiveResult === true || r <= 0 && positiveResult === false) {\n if (positiveResult === null) {\n positiveResult = r > 0;\n }\n\n continue;\n } else {\n return false; // Encountered some other sign. Exit.\n }\n } // If we got here, all dot products were of the same sign.\n\n\n return true;\n}\n\nconst box_to_sphere = new Vec3();\nconst sphereBox_ns = new Vec3();\nconst sphereBox_ns1 = new Vec3();\nconst sphereBox_ns2 = new Vec3();\nconst sphereBox_sides = [new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3(), new Vec3()];\nconst sphereBox_sphere_to_corner = new Vec3();\nconst sphereBox_side_ns = new Vec3();\nconst sphereBox_side_ns1 = new Vec3();\nconst sphereBox_side_ns2 = new Vec3();\nconst convex_to_sphere = new Vec3();\nconst sphereConvex_edge = new Vec3();\nconst sphereConvex_edgeUnit = new Vec3();\nconst sphereConvex_sphereToCorner = new Vec3();\nconst sphereConvex_worldCorner = new Vec3();\nconst sphereConvex_worldNormal = new Vec3();\nconst sphereConvex_worldPoint = new Vec3();\nconst sphereConvex_worldSpherePointClosestToPlane = new Vec3();\nconst sphereConvex_penetrationVec = new Vec3();\nconst sphereConvex_sphereToWorldPoint = new Vec3();\nconst planeConvex_v = new Vec3();\nconst planeConvex_normal = new Vec3();\nconst planeConvex_relpos = new Vec3();\nconst planeConvex_projected = new Vec3();\nconst convexConvex_sepAxis = new Vec3();\nconst convexConvex_q = new Vec3();\nconst particlePlane_normal = new Vec3();\nconst particlePlane_relpos = new Vec3();\nconst particlePlane_projected = new Vec3();\nconst particleSphere_normal = new Vec3(); // WIP\n\nconst cqj = new Quaternion();\nconst convexParticle_local = new Vec3();\nconst convexParticle_penetratedFaceNormal = new Vec3();\nconst convexParticle_vertexToParticle = new Vec3();\nconst convexParticle_worldPenetrationVec = new Vec3();\nconst convexHeightfield_tmp1 = new Vec3();\nconst convexHeightfield_tmp2 = new Vec3();\nconst convexHeightfield_faceList = [0];\nconst sphereHeightfield_tmp1 = new Vec3();\nconst sphereHeightfield_tmp2 = new Vec3();\n\nclass OverlapKeeper {\n /**\n * @todo Remove useless constructor\n */\n constructor() {\n this.current = void 0;\n this.previous = void 0;\n this.current = [];\n this.previous = [];\n }\n /**\n * getKey\n */\n\n\n getKey(i, j) {\n if (j < i) {\n const temp = j;\n j = i;\n i = temp;\n }\n\n return i << 16 | j;\n }\n /**\n * set\n */\n\n\n set(i, j) {\n // Insertion sort. This way the diff will have linear complexity.\n const key = this.getKey(i, j);\n const current = this.current;\n let index = 0;\n\n while (key > current[index]) {\n index++;\n }\n\n if (key === current[index]) {\n return; // Pair was already added\n }\n\n for (let j = current.length - 1; j >= index; j--) {\n current[j + 1] = current[j];\n }\n\n current[index] = key;\n }\n /**\n * tick\n */\n\n\n tick() {\n const tmp = this.current;\n this.current = this.previous;\n this.previous = tmp;\n this.current.length = 0;\n }\n /**\n * getDiff\n */\n\n\n getDiff(additions, removals) {\n const a = this.current;\n const b = this.previous;\n const al = a.length;\n const bl = b.length;\n let j = 0;\n\n for (let i = 0; i < al; i++) {\n let found = false;\n const keyA = a[i];\n\n while (keyA > b[j]) {\n j++;\n }\n\n found = keyA === b[j];\n\n if (!found) {\n unpackAndPush(additions, keyA);\n }\n }\n\n j = 0;\n\n for (let i = 0; i < bl; i++) {\n let found = false;\n const keyB = b[i];\n\n while (keyB > a[j]) {\n j++;\n }\n\n found = a[j] === keyB;\n\n if (!found) {\n unpackAndPush(removals, keyB);\n }\n }\n }\n\n}\n\nfunction unpackAndPush(array, key) {\n array.push((key & 0xffff0000) >> 16, key & 0x0000ffff);\n}\n\n/**\n * TupleDictionary\n */\nclass TupleDictionary {\n constructor() {\n this.data = {\n keys: []\n };\n }\n\n /** get */\n get(i, j) {\n if (i > j) {\n // swap\n const temp = j;\n j = i;\n i = temp;\n }\n\n return this.data[i + \"-\" + j];\n }\n /** set */\n\n\n set(i, j, value) {\n if (i > j) {\n const temp = j;\n j = i;\n i = temp;\n }\n\n const key = i + \"-\" + j; // Check if key already exists\n\n if (!this.get(i, j)) {\n this.data.keys.push(key);\n }\n\n this.data[key] = value;\n }\n /** reset */\n\n\n reset() {\n const data = this.data;\n const keys = data.keys;\n\n while (keys.length > 0) {\n const key = keys.pop();\n delete data[key];\n }\n }\n\n}\n\n/**\n * The physics world\n */\nclass World extends EventTarget {\n /**\n * Currently / last used timestep. Is set to -1 if not available. This value is updated before each internal step, which means that it is \"fresh\" inside event callbacks.\n */\n\n /**\n * Makes bodies go to sleep when they've been inactive.\n * @default false\n */\n\n /**\n * All the current contacts (instances of ContactEquation) in the world.\n */\n\n /**\n * How often to normalize quaternions. Set to 0 for every step, 1 for every second etc.. A larger value increases performance. If bodies tend to explode, set to a smaller value (zero to be sure nothing can go wrong).\n * @default 0\n */\n\n /**\n * Set to true to use fast quaternion normalization. It is often enough accurate to use.\n * If bodies tend to explode, set to false.\n * @default false\n */\n\n /**\n * The wall-clock time since simulation start.\n */\n\n /**\n * Number of timesteps taken since start.\n */\n\n /**\n * Default and last timestep sizes.\n */\n\n /**\n * The gravity of the world.\n */\n\n /**\n * The broadphase algorithm to use.\n * @default NaiveBroadphase\n */\n\n /**\n * All bodies in this world\n */\n\n /**\n * True if any bodies are not sleeping, false if every body is sleeping.\n */\n\n /**\n * The solver algorithm to use.\n * @default GSSolver\n */\n\n /**\n * collisionMatrix\n */\n\n /**\n * CollisionMatrix from the previous step.\n */\n\n /**\n * All added materials.\n * @deprecated\n * @todo Remove\n */\n\n /**\n * All added contactmaterials.\n */\n\n /**\n * Used to look up a ContactMaterial given two instances of Material.\n */\n\n /**\n * The default material of the bodies.\n */\n\n /**\n * This contact material is used if no suitable contactmaterial is found for a contact.\n */\n\n /**\n * Time accumulator for interpolation.\n * @see https://gafferongames.com/game-physics/fix-your-timestep/\n */\n\n /**\n * Dispatched after a body has been added to the world.\n */\n\n /**\n * Dispatched after a body has been removed from the world.\n */\n constructor(options = {}) {\n super();\n this.dt = void 0;\n this.allowSleep = void 0;\n this.contacts = void 0;\n this.frictionEquations = void 0;\n this.quatNormalizeSkip = void 0;\n this.quatNormalizeFast = void 0;\n this.time = void 0;\n this.stepnumber = void 0;\n this.default_dt = void 0;\n this.nextId = void 0;\n this.gravity = void 0;\n this.broadphase = void 0;\n this.bodies = void 0;\n this.hasActiveBodies = void 0;\n this.solver = void 0;\n this.constraints = void 0;\n this.narrowphase = void 0;\n this.collisionMatrix = void 0;\n this.collisionMatrixPrevious = void 0;\n this.bodyOverlapKeeper = void 0;\n this.shapeOverlapKeeper = void 0;\n this.materials = void 0;\n this.contactmaterials = void 0;\n this.contactMaterialTable = void 0;\n this.defaultMaterial = void 0;\n this.defaultContactMaterial = void 0;\n this.doProfiling = void 0;\n this.profile = void 0;\n this.accumulator = void 0;\n this.subsystems = void 0;\n this.addBodyEvent = void 0;\n this.removeBodyEvent = void 0;\n this.idToBodyMap = void 0;\n this.dt = -1;\n this.allowSleep = !!options.allowSleep;\n this.contacts = [];\n this.frictionEquations = [];\n this.quatNormalizeSkip = options.quatNormalizeSkip !== undefined ? options.quatNormalizeSkip : 0;\n this.quatNormalizeFast = options.quatNormalizeFast !== undefined ? options.quatNormalizeFast : false;\n this.time = 0.0;\n this.stepnumber = 0;\n this.default_dt = 1 / 60;\n this.nextId = 0;\n this.gravity = new Vec3();\n\n if (options.gravity) {\n this.gravity.copy(options.gravity);\n }\n\n this.broadphase = options.broadphase !== undefined ? options.broadphase : new NaiveBroadphase();\n this.bodies = [];\n this.hasActiveBodies = false;\n this.solver = options.solver !== undefined ? options.solver : new GSSolver();\n this.constraints = [];\n this.narrowphase = new Narrowphase(this);\n this.collisionMatrix = new ArrayCollisionMatrix();\n this.collisionMatrixPrevious = new ArrayCollisionMatrix();\n this.bodyOverlapKeeper = new OverlapKeeper();\n this.shapeOverlapKeeper = new OverlapKeeper();\n this.materials = [];\n this.contactmaterials = [];\n this.contactMaterialTable = new TupleDictionary();\n this.defaultMaterial = new Material('default');\n this.defaultContactMaterial = new ContactMaterial(this.defaultMaterial, this.defaultMaterial, {\n friction: 0.3,\n restitution: 0.0\n });\n this.doProfiling = false;\n this.profile = {\n solve: 0,\n makeContactConstraints: 0,\n broadphase: 0,\n integrate: 0,\n narrowphase: 0\n };\n this.accumulator = 0;\n this.subsystems = [];\n this.addBodyEvent = {\n type: 'addBody',\n body: null\n };\n this.removeBodyEvent = {\n type: 'removeBody',\n body: null\n };\n this.idToBodyMap = {};\n this.broadphase.setWorld(this);\n }\n /**\n * Get the contact material between materials m1 and m2\n * @return The contact material if it was found.\n */\n\n\n getContactMaterial(m1, m2) {\n return this.contactMaterialTable.get(m1.id, m2.id);\n }\n /**\n * Get number of objects in the world.\n * @deprecated\n */\n\n\n numObjects() {\n return this.bodies.length;\n }\n /**\n * Store old collision state info\n */\n\n\n collisionMatrixTick() {\n const temp = this.collisionMatrixPrevious;\n this.collisionMatrixPrevious = this.collisionMatrix;\n this.collisionMatrix = temp;\n this.collisionMatrix.reset();\n this.bodyOverlapKeeper.tick();\n this.shapeOverlapKeeper.tick();\n }\n /**\n * Add a constraint to the simulation.\n */\n\n\n addConstraint(c) {\n this.constraints.push(c);\n }\n /**\n * Removes a constraint\n */\n\n\n removeConstraint(c) {\n const idx = this.constraints.indexOf(c);\n\n if (idx !== -1) {\n this.constraints.splice(idx, 1);\n }\n }\n /**\n * Raycast test\n * @deprecated Use .raycastAll, .raycastClosest or .raycastAny instead.\n */\n\n\n rayTest(from, to, result) {\n if (result instanceof RaycastResult) {\n // Do raycastClosest\n this.raycastClosest(from, to, {\n skipBackfaces: true\n }, result);\n } else {\n // Do raycastAll\n this.raycastAll(from, to, {\n skipBackfaces: true\n }, result);\n }\n }\n /**\n * Ray cast against all bodies. The provided callback will be executed for each hit with a RaycastResult as single argument.\n * @return True if any body was hit.\n */\n\n\n raycastAll(from, to, options = {}, callback) {\n options.mode = Ray.ALL;\n options.from = from;\n options.to = to;\n options.callback = callback;\n return tmpRay.intersectWorld(this, options);\n }\n /**\n * Ray cast, and stop at the first result. Note that the order is random - but the method is fast.\n * @return True if any body was hit.\n */\n\n\n raycastAny(from, to, options = {}, result) {\n options.mode = Ray.ANY;\n options.from = from;\n options.to = to;\n options.result = result;\n return tmpRay.intersectWorld(this, options);\n }\n /**\n * Ray cast, and return information of the closest hit.\n * @return True if any body was hit.\n */\n\n\n raycastClosest(from, to, options = {}, result) {\n options.mode = Ray.CLOSEST;\n options.from = from;\n options.to = to;\n options.result = result;\n return tmpRay.intersectWorld(this, options);\n }\n /**\n * Add a rigid body to the simulation.\n * @todo If the simulation has not yet started, why recrete and copy arrays for each body? Accumulate in dynamic arrays in this case.\n * @todo Adding an array of bodies should be possible. This would save some loops too\n */\n\n\n addBody(body) {\n if (this.bodies.includes(body)) {\n return;\n }\n\n body.index = this.bodies.length;\n this.bodies.push(body);\n body.world = this;\n body.initPosition.copy(body.position);\n body.initVelocity.copy(body.velocity);\n body.timeLastSleepy = this.time;\n\n if (body instanceof Body) {\n body.initAngularVelocity.copy(body.angularVelocity);\n body.initQuaternion.copy(body.quaternion);\n }\n\n this.collisionMatrix.setNumObjects(this.bodies.length);\n this.addBodyEvent.body = body;\n this.idToBodyMap[body.id] = body;\n this.dispatchEvent(this.addBodyEvent);\n }\n /**\n * Remove a rigid body from the simulation.\n */\n\n\n removeBody(body) {\n body.world = null;\n const n = this.bodies.length - 1;\n const bodies = this.bodies;\n const idx = bodies.indexOf(body);\n\n if (idx !== -1) {\n bodies.splice(idx, 1); // Todo: should use a garbage free method\n // Recompute index\n\n for (let i = 0; i !== bodies.length; i++) {\n bodies[i].index = i;\n }\n\n this.collisionMatrix.setNumObjects(n);\n this.removeBodyEvent.body = body;\n delete this.idToBodyMap[body.id];\n this.dispatchEvent(this.removeBodyEvent);\n }\n }\n\n getBodyById(id) {\n return this.idToBodyMap[id];\n }\n /**\n * @todo Make a faster map\n */\n\n\n getShapeById(id) {\n const bodies = this.bodies;\n\n for (let i = 0; i < bodies.length; i++) {\n const shapes = bodies[i].shapes;\n\n for (let j = 0; j < shapes.length; j++) {\n const shape = shapes[j];\n\n if (shape.id === id) {\n return shape;\n }\n }\n }\n\n return null;\n }\n /**\n * Adds a material to the World.\n * @deprecated\n * @todo Remove\n */\n\n\n addMaterial(m) {\n this.materials.push(m);\n }\n /**\n * Adds a contact material to the World\n */\n\n\n addContactMaterial(cmat) {\n // Add contact material\n this.contactmaterials.push(cmat); // Add current contact material to the material table\n\n this.contactMaterialTable.set(cmat.materials[0].id, cmat.materials[1].id, cmat);\n }\n /**\n * Step the physics world forward in time.\n *\n * There are two modes. The simple mode is fixed timestepping without interpolation. In this case you only use the first argument. The second case uses interpolation. In that you also provide the time since the function was last used, as well as the maximum fixed timesteps to take.\n *\n * @param dt The fixed time step size to use.\n * @param timeSinceLastCalled The time elapsed since the function was last called.\n * @param maxSubSteps Maximum number of fixed steps to take per function call.\n * @see https://web.archive.org/web/20180426154531/http://bulletphysics.org/mediawiki-1.5.8/index.php/Stepping_The_World#What_do_the_parameters_to_btDynamicsWorld::stepSimulation_mean.3F\n * @example\n * // fixed timestepping without interpolation\n * world.step(1 / 60)\n */\n\n\n step(dt, timeSinceLastCalled, maxSubSteps = 10) {\n if (timeSinceLastCalled === undefined) {\n // Fixed, simple stepping\n this.internalStep(dt); // Increment time\n\n this.time += dt;\n } else {\n this.accumulator += timeSinceLastCalled;\n const t0 = performance.now();\n let substeps = 0;\n\n while (this.accumulator >= dt && substeps < maxSubSteps) {\n // Do fixed steps to catch up\n this.internalStep(dt);\n this.accumulator -= dt;\n substeps++;\n\n if (performance.now() - t0 > dt * 1000) {\n // The framerate is not interactive anymore.\n // We are below the target framerate.\n // Better bail out.\n break;\n }\n } // Remove the excess accumulator, since we may not\n // have had enough substeps available to catch up\n\n\n this.accumulator = this.accumulator % dt;\n const t = this.accumulator / dt;\n\n for (let j = 0; j !== this.bodies.length; j++) {\n const b = this.bodies[j];\n b.previousPosition.lerp(b.position, t, b.interpolatedPosition);\n b.previousQuaternion.slerp(b.quaternion, t, b.interpolatedQuaternion);\n b.previousQuaternion.normalize();\n }\n\n this.time += timeSinceLastCalled;\n }\n }\n\n internalStep(dt) {\n this.dt = dt;\n const contacts = this.contacts;\n const p1 = World_step_p1;\n const p2 = World_step_p2;\n const N = this.numObjects();\n const bodies = this.bodies;\n const solver = this.solver;\n const gravity = this.gravity;\n const doProfiling = this.doProfiling;\n const profile = this.profile;\n const DYNAMIC = Body.DYNAMIC;\n let profilingStart = -Infinity;\n const constraints = this.constraints;\n const frictionEquationPool = World_step_frictionEquationPool;\n gravity.length();\n const gx = gravity.x;\n const gy = gravity.y;\n const gz = gravity.z;\n let i = 0;\n\n if (doProfiling) {\n profilingStart = performance.now();\n } // Add gravity to all objects\n\n\n for (i = 0; i !== N; i++) {\n const bi = bodies[i];\n\n if (bi.type === DYNAMIC) {\n // Only for dynamic bodies\n const f = bi.force;\n const m = bi.mass;\n f.x += m * gx;\n f.y += m * gy;\n f.z += m * gz;\n }\n } // Update subsystems\n\n\n for (let i = 0, Nsubsystems = this.subsystems.length; i !== Nsubsystems; i++) {\n this.subsystems[i].update();\n } // Collision detection\n\n\n if (doProfiling) {\n profilingStart = performance.now();\n }\n\n p1.length = 0; // Clean up pair arrays from last step\n\n p2.length = 0;\n this.broadphase.collisionPairs(this, p1, p2);\n\n if (doProfiling) {\n profile.broadphase = performance.now() - profilingStart;\n } // Remove constrained pairs with collideConnected == false\n\n\n let Nconstraints = constraints.length;\n\n for (i = 0; i !== Nconstraints; i++) {\n const c = constraints[i];\n\n if (!c.collideConnected) {\n for (let j = p1.length - 1; j >= 0; j -= 1) {\n if (c.bodyA === p1[j] && c.bodyB === p2[j] || c.bodyB === p1[j] && c.bodyA === p2[j]) {\n p1.splice(j, 1);\n p2.splice(j, 1);\n }\n }\n }\n }\n\n this.collisionMatrixTick(); // Generate contacts\n\n if (doProfiling) {\n profilingStart = performance.now();\n }\n\n const oldcontacts = World_step_oldContacts;\n const NoldContacts = contacts.length;\n\n for (i = 0; i !== NoldContacts; i++) {\n oldcontacts.push(contacts[i]);\n }\n\n contacts.length = 0; // Transfer FrictionEquation from current list to the pool for reuse\n\n const NoldFrictionEquations = this.frictionEquations.length;\n\n for (i = 0; i !== NoldFrictionEquations; i++) {\n frictionEquationPool.push(this.frictionEquations[i]);\n }\n\n this.frictionEquations.length = 0;\n this.narrowphase.getContacts(p1, p2, this, contacts, oldcontacts, // To be reused\n this.frictionEquations, frictionEquationPool);\n\n if (doProfiling) {\n profile.narrowphase = performance.now() - profilingStart;\n } // Loop over all collisions\n\n\n if (doProfiling) {\n profilingStart = performance.now();\n } // Add all friction eqs\n\n\n for (i = 0; i < this.frictionEquations.length; i++) {\n solver.addEquation(this.frictionEquations[i]);\n }\n\n const ncontacts = contacts.length;\n\n for (let k = 0; k !== ncontacts; k++) {\n // Current contact\n const c = contacts[k]; // Get current collision indeces\n\n const bi = c.bi;\n const bj = c.bj;\n const si = c.si;\n const sj = c.sj; // Get collision properties\n\n let cm;\n\n if (bi.material && bj.material) {\n cm = this.getContactMaterial(bi.material, bj.material) || this.defaultContactMaterial;\n } else {\n cm = this.defaultContactMaterial;\n } // c.enabled = bi.collisionResponse && bj.collisionResponse && si.collisionResponse && sj.collisionResponse;\n\n\n cm.friction; // c.restitution = cm.restitution;\n // If friction or restitution were specified in the material, use them\n\n if (bi.material && bj.material) {\n if (bi.material.friction >= 0 && bj.material.friction >= 0) {\n bi.material.friction * bj.material.friction;\n }\n\n if (bi.material.restitution >= 0 && bj.material.restitution >= 0) {\n c.restitution = bi.material.restitution * bj.material.restitution;\n }\n } // c.setSpookParams(\n // cm.contactEquationStiffness,\n // cm.contactEquationRelaxation,\n // dt\n // );\n\n\n solver.addEquation(c); // // Add friction constraint equation\n // if(mu > 0){\n // \t// Create 2 tangent equations\n // \tconst mug = mu * gnorm;\n // \tconst reducedMass = (bi.invMass + bj.invMass);\n // \tif(reducedMass > 0){\n // \t\treducedMass = 1/reducedMass;\n // \t}\n // \tconst pool = frictionEquationPool;\n // \tconst c1 = pool.length ? pool.pop() : new FrictionEquation(bi,bj,mug*reducedMass);\n // \tconst c2 = pool.length ? pool.pop() : new FrictionEquation(bi,bj,mug*reducedMass);\n // \tthis.frictionEquations.push(c1, c2);\n // \tc1.bi = c2.bi = bi;\n // \tc1.bj = c2.bj = bj;\n // \tc1.minForce = c2.minForce = -mug*reducedMass;\n // \tc1.maxForce = c2.maxForce = mug*reducedMass;\n // \t// Copy over the relative vectors\n // \tc1.ri.copy(c.ri);\n // \tc1.rj.copy(c.rj);\n // \tc2.ri.copy(c.ri);\n // \tc2.rj.copy(c.rj);\n // \t// Construct tangents\n // \tc.ni.tangents(c1.t, c2.t);\n // // Set spook params\n // c1.setSpookParams(cm.frictionEquationStiffness, cm.frictionEquationRelaxation, dt);\n // c2.setSpookParams(cm.frictionEquationStiffness, cm.frictionEquationRelaxation, dt);\n // c1.enabled = c2.enabled = c.enabled;\n // \t// Add equations to solver\n // \tsolver.addEquation(c1);\n // \tsolver.addEquation(c2);\n // }\n\n if (bi.allowSleep && bi.type === Body.DYNAMIC && bi.sleepState === Body.SLEEPING && bj.sleepState === Body.AWAKE && bj.type !== Body.STATIC) {\n const speedSquaredB = bj.velocity.lengthSquared() + bj.angularVelocity.lengthSquared();\n const speedLimitSquaredB = bj.sleepSpeedLimit ** 2;\n\n if (speedSquaredB >= speedLimitSquaredB * 2) {\n bi.wakeUpAfterNarrowphase = true;\n }\n }\n\n if (bj.allowSleep && bj.type === Body.DYNAMIC && bj.sleepState === Body.SLEEPING && bi.sleepState === Body.AWAKE && bi.type !== Body.STATIC) {\n const speedSquaredA = bi.velocity.lengthSquared() + bi.angularVelocity.lengthSquared();\n const speedLimitSquaredA = bi.sleepSpeedLimit ** 2;\n\n if (speedSquaredA >= speedLimitSquaredA * 2) {\n bj.wakeUpAfterNarrowphase = true;\n }\n } // Now we know that i and j are in contact. Set collision matrix state\n\n\n this.collisionMatrix.set(bi, bj, true);\n\n if (!this.collisionMatrixPrevious.get(bi, bj)) {\n // First contact!\n // We reuse the collideEvent object, otherwise we will end up creating new objects for each new contact, even if there's no event listener attached.\n World_step_collideEvent.body = bj;\n World_step_collideEvent.contact = c;\n bi.dispatchEvent(World_step_collideEvent);\n World_step_collideEvent.body = bi;\n bj.dispatchEvent(World_step_collideEvent);\n }\n\n this.bodyOverlapKeeper.set(bi.id, bj.id);\n this.shapeOverlapKeeper.set(si.id, sj.id);\n }\n\n this.emitContactEvents();\n\n if (doProfiling) {\n profile.makeContactConstraints = performance.now() - profilingStart;\n profilingStart = performance.now();\n } // Wake up bodies\n\n\n for (i = 0; i !== N; i++) {\n const bi = bodies[i];\n\n if (bi.wakeUpAfterNarrowphase) {\n bi.wakeUp();\n bi.wakeUpAfterNarrowphase = false;\n }\n } // Add user-added constraints\n\n\n Nconstraints = constraints.length;\n\n for (i = 0; i !== Nconstraints; i++) {\n const c = constraints[i];\n c.update();\n\n for (let j = 0, Neq = c.equations.length; j !== Neq; j++) {\n const eq = c.equations[j];\n solver.addEquation(eq);\n }\n } // Solve the constrained system\n\n\n solver.solve(dt, this);\n\n if (doProfiling) {\n profile.solve = performance.now() - profilingStart;\n } // Remove all contacts from solver\n\n\n solver.removeAllEquations(); // Apply damping, see http://code.google.com/p/bullet/issues/detail?id=74 for details\n\n const pow = Math.pow;\n\n for (i = 0; i !== N; i++) {\n const bi = bodies[i];\n\n if (bi.type & DYNAMIC) {\n // Only for dynamic bodies\n const ld = pow(1.0 - bi.linearDamping, dt);\n const v = bi.velocity;\n v.scale(ld, v);\n const av = bi.angularVelocity;\n\n if (av) {\n const ad = pow(1.0 - bi.angularDamping, dt);\n av.scale(ad, av);\n }\n }\n }\n\n this.dispatchEvent(World_step_preStepEvent); // Invoke pre-step callbacks\n\n for (i = 0; i !== N; i++) {\n const bi = bodies[i];\n\n if (bi.preStep) {\n bi.preStep.call(bi);\n }\n } // Leap frog\n // vnew = v + h*f/m\n // xnew = x + h*vnew\n\n\n if (doProfiling) {\n profilingStart = performance.now();\n }\n\n const stepnumber = this.stepnumber;\n const quatNormalize = stepnumber % (this.quatNormalizeSkip + 1) === 0;\n const quatNormalizeFast = this.quatNormalizeFast;\n\n for (i = 0; i !== N; i++) {\n bodies[i].integrate(dt, quatNormalize, quatNormalizeFast);\n }\n\n this.clearForces();\n this.broadphase.dirty = true;\n\n if (doProfiling) {\n profile.integrate = performance.now() - profilingStart;\n } // Update step number\n\n\n this.stepnumber += 1;\n this.dispatchEvent(World_step_postStepEvent); // Invoke post-step callbacks\n\n for (i = 0; i !== N; i++) {\n const bi = bodies[i];\n const postStep = bi.postStep;\n\n if (postStep) {\n postStep.call(bi);\n }\n } // Sleeping update\n\n\n let hasActiveBodies = true;\n\n if (this.allowSleep) {\n hasActiveBodies = false;\n\n for (i = 0; i !== N; i++) {\n const bi = bodies[i];\n bi.sleepTick(this.time);\n\n if (bi.sleepState !== Body.SLEEPING) {\n hasActiveBodies = true;\n }\n }\n }\n\n this.hasActiveBodies = hasActiveBodies;\n }\n\n emitContactEvents() {\n const hasBeginContact = this.hasAnyEventListener('beginContact');\n const hasEndContact = this.hasAnyEventListener('endContact');\n\n if (hasBeginContact || hasEndContact) {\n this.bodyOverlapKeeper.getDiff(additions, removals);\n }\n\n if (hasBeginContact) {\n for (let i = 0, l = additions.length; i < l; i += 2) {\n beginContactEvent.bodyA = this.getBodyById(additions[i]);\n beginContactEvent.bodyB = this.getBodyById(additions[i + 1]);\n this.dispatchEvent(beginContactEvent);\n }\n\n beginContactEvent.bodyA = beginContactEvent.bodyB = null;\n }\n\n if (hasEndContact) {\n for (let i = 0, l = removals.length; i < l; i += 2) {\n endContactEvent.bodyA = this.getBodyById(removals[i]);\n endContactEvent.bodyB = this.getBodyById(removals[i + 1]);\n this.dispatchEvent(endContactEvent);\n }\n\n endContactEvent.bodyA = endContactEvent.bodyB = null;\n }\n\n additions.length = removals.length = 0;\n const hasBeginShapeContact = this.hasAnyEventListener('beginShapeContact');\n const hasEndShapeContact = this.hasAnyEventListener('endShapeContact');\n\n if (hasBeginShapeContact || hasEndShapeContact) {\n this.shapeOverlapKeeper.getDiff(additions, removals);\n }\n\n if (hasBeginShapeContact) {\n for (let i = 0, l = additions.length; i < l; i += 2) {\n const shapeA = this.getShapeById(additions[i]);\n const shapeB = this.getShapeById(additions[i + 1]);\n beginShapeContactEvent.shapeA = shapeA;\n beginShapeContactEvent.shapeB = shapeB;\n if (shapeA) beginShapeContactEvent.bodyA = shapeA.body;\n if (shapeB) beginShapeContactEvent.bodyB = shapeB.body;\n this.dispatchEvent(beginShapeContactEvent);\n }\n\n beginShapeContactEvent.bodyA = beginShapeContactEvent.bodyB = beginShapeContactEvent.shapeA = beginShapeContactEvent.shapeB = null;\n }\n\n if (hasEndShapeContact) {\n for (let i = 0, l = removals.length; i < l; i += 2) {\n const shapeA = this.getShapeById(removals[i]);\n const shapeB = this.getShapeById(removals[i + 1]);\n endShapeContactEvent.shapeA = shapeA;\n endShapeContactEvent.shapeB = shapeB;\n if (shapeA) endShapeContactEvent.bodyA = shapeA.body;\n if (shapeB) endShapeContactEvent.bodyB = shapeB.body;\n this.dispatchEvent(endShapeContactEvent);\n }\n\n endShapeContactEvent.bodyA = endShapeContactEvent.bodyB = endShapeContactEvent.shapeA = endShapeContactEvent.shapeB = null;\n }\n }\n /**\n * Sets all body forces in the world to zero.\n */\n\n\n clearForces() {\n const bodies = this.bodies;\n const N = bodies.length;\n\n for (let i = 0; i !== N; i++) {\n const b = bodies[i];\n b.force;\n b.torque;\n b.force.set(0, 0, 0);\n b.torque.set(0, 0, 0);\n }\n }\n\n} // Temp stuff\n\nnew AABB();\nconst tmpRay = new Ray(); // performance.now() fallback on Date.now()\n\nconst performance = globalThis.performance || {};\n\nif (!performance.now) {\n let nowOffset = Date.now();\n\n if (performance.timing && performance.timing.navigationStart) {\n nowOffset = performance.timing.navigationStart;\n }\n\n performance.now = () => Date.now() - nowOffset;\n}\n// Reusable event objects to save memory.\n\nconst World_step_postStepEvent = {\n type: 'postStep'\n}; // Dispatched before the world steps forward in time.\n\nconst World_step_preStepEvent = {\n type: 'preStep'\n};\nconst World_step_collideEvent = {\n type: Body.COLLIDE_EVENT_NAME,\n body: null,\n contact: null\n}; // Pools for unused objects\n\nconst World_step_oldContacts = [];\nconst World_step_frictionEquationPool = []; // Reusable arrays for collision pairs\n\nconst World_step_p1 = [];\nconst World_step_p2 = []; // Stuff for emitContactEvents\n\nconst additions = [];\nconst removals = [];\nconst beginContactEvent = {\n type: 'beginContact',\n bodyA: null,\n bodyB: null\n};\nconst endContactEvent = {\n type: 'endContact',\n bodyA: null,\n bodyB: null\n};\nconst beginShapeContactEvent = {\n type: 'beginShapeContact',\n bodyA: null,\n bodyB: null,\n shapeA: null,\n shapeB: null\n};\nconst endShapeContactEvent = {\n type: 'endShapeContact',\n bodyA: null,\n bodyB: null,\n shapeA: null,\n shapeB: null\n};\n\nexport { AABB, ArrayCollisionMatrix, BODY_SLEEP_STATES, BODY_TYPES, Body, Box, Broadphase, COLLISION_TYPES, ConeTwistConstraint, Constraint, ContactEquation, ContactMaterial, ConvexPolyhedron, Cylinder, DistanceConstraint, Equation, EventTarget, FrictionEquation, GSSolver, GridBroadphase, Heightfield, HingeConstraint, JacobianElement, LockConstraint, Mat3, Material, NaiveBroadphase, Narrowphase, ObjectCollisionMatrix, Particle, Plane, PointToPointConstraint, Pool, Quaternion, RAY_MODES, Ray, RaycastResult, RaycastVehicle, RigidVehicle, RotationalEquation, RotationalMotorEquation, SAPBroadphase, SHAPE_TYPES, SPHSystem, Shape, Solver, Sphere, SplitSolver, Spring, Transform, Trimesh, Vec3, Vec3Pool, WheelInfo, World };\n","'use strict';\nvar toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\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","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\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 anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = iterator['return'];\n if (innerResult === undefined) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = innerResult.call(iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var argumentsLength = arguments.length;\n var i = 1;\n while (argumentsLength > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// stats.js - http://github.com/mrdoob/stats.js\n(function(f,e){\"object\"===typeof exports&&\"undefined\"!==typeof module?module.exports=e():\"function\"===typeof define&&define.amd?define(e):f.Stats=e()})(this,function(){var f=function(){function e(a){c.appendChild(a.dom);return a}function u(a){for(var d=0;dg+1E3&&(r.update(1E3*a/(c-g),100),g=c,a=0,t)){var d=performance.memory;t.update(d.usedJSHeapSize/\n1048576,d.jsHeapSizeLimit/1048576)}return c},update:function(){k=this.end()},domElement:c,setMode:u}};f.Panel=function(e,f,l){var c=Infinity,k=0,g=Math.round,a=g(window.devicePixelRatio||1),r=80*a,h=48*a,t=3*a,v=2*a,d=3*a,m=15*a,n=74*a,p=30*a,q=document.createElement(\"canvas\");q.width=r;q.height=h;q.style.cssText=\"width:80px;height:48px\";var b=q.getContext(\"2d\");b.font=\"bold \"+9*a+\"px Helvetica,Arial,sans-serif\";b.textBaseline=\"top\";b.fillStyle=l;b.fillRect(0,0,r,h);b.fillStyle=f;b.fillText(e,t,v);\nb.fillRect(d,m,n,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d,m,n,p);return{dom:q,update:function(h,w){c=Math.min(c,h);k=Math.max(k,h);b.fillStyle=l;b.globalAlpha=1;b.fillRect(0,0,r,m);b.fillStyle=f;b.fillText(g(h)+\" \"+e+\" (\"+g(c)+\"-\"+g(k)+\")\",t,v);b.drawImage(q,d+a,m,n-a,p,d,m,n-a,p);b.fillRect(d+n-a,m,a,p);b.fillStyle=l;b.globalAlpha=.9;b.fillRect(d+n-a,m,a,g((1-h/w)*p))}}};return f});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","import { getTarget, getDevtoolsGlobalHook } from './env';\nimport { HOOK_SETUP } from './const';\nexport * from './api';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const hook = getDevtoolsGlobalHook();\n if (hook) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const target = getTarget();\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor,\n setupFn\n });\n }\n}\n","module.exports = {};\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","(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 ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","(function(t,e){\"object\"===typeof exports&&\"object\"===typeof module?module.exports=e(require(\"vue\")):\"function\"===typeof define&&define.amd?define([],e):\"object\"===typeof exports?exports[\"k-progress\"]=e(require(\"vue\")):t[\"k-progress\"]=e(t[\"Vue\"])})(\"undefined\"!==typeof self?self:this,(function(t){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){\"undefined\"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"===typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t[\"default\"]}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=\"fb15\")}({\"00ee\":function(t,e,r){var n=r(\"b622\"),o=n(\"toStringTag\"),i={};i[o]=\"z\",t.exports=\"[object z]\"===String(i)},\"0366\":function(t,e,r){var n=r(\"1c0b\");t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 0:return function(){return t.call(e)};case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,o){return t.call(e,r,n,o)}}return function(){return t.apply(e,arguments)}}},\"057f\":function(t,e,r){var n=r(\"fc6a\"),o=r(\"241c\").f,i={}.toString,c=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return o(t)}catch(e){return c.slice()}};t.exports.f=function(t){return c&&\"[object Window]\"==i.call(t)?a(t):o(n(t))}},\"06cf\":function(t,e,r){var n=r(\"83ab\"),o=r(\"d1e7\"),i=r(\"5c6c\"),c=r(\"fc6a\"),a=r(\"c04e\"),u=r(\"5135\"),f=r(\"0cfb\"),s=Object.getOwnPropertyDescriptor;e.f=n?s:function(t,e){if(t=c(t),e=a(e,!0),f)try{return s(t,e)}catch(r){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},\"0cfb\":function(t,e,r){var n=r(\"83ab\"),o=r(\"d039\"),i=r(\"cc12\");t.exports=!n&&!o((function(){return 7!=Object.defineProperty(i(\"div\"),\"a\",{get:function(){return 7}}).a}))},\"14c3\":function(t,e,r){var n=r(\"c6b6\"),o=r(\"9263\");t.exports=function(t,e){var r=t.exec;if(\"function\"===typeof r){var i=r.call(t,e);if(\"object\"!==typeof i)throw TypeError(\"RegExp exec method returned something other than an Object or null\");return i}if(\"RegExp\"!==n(t))throw TypeError(\"RegExp#exec called on incompatible receiver\");return o.call(t,e)}},\"1be4\":function(t,e,r){var n=r(\"d066\");t.exports=n(\"document\",\"documentElement\")},\"1c0b\":function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(String(t)+\" is not a function\");return t}},\"1c7e\":function(t,e,r){var n=r(\"b622\"),o=n(\"iterator\"),i=!1;try{var c=0,a={next:function(){return{done:!!c++}},return:function(){i=!0}};a[o]=function(){return this},Array.from(a,(function(){throw 2}))}catch(u){}t.exports=function(t,e){if(!e&&!i)return!1;var r=!1;try{var n={};n[o]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(u){}return r}},\"1d80\":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},\"1dde\":function(t,e,r){var n=r(\"d039\"),o=r(\"b622\"),i=r(\"2d00\"),c=o(\"species\");t.exports=function(t){return i>=51||!n((function(){var e=[],r=e.constructor={};return r[c]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},\"23cb\":function(t,e,r){var n=r(\"a691\"),o=Math.max,i=Math.min;t.exports=function(t,e){var r=n(t);return r<0?o(r+e,0):i(r,e)}},\"23e7\":function(t,e,r){var n=r(\"da84\"),o=r(\"06cf\").f,i=r(\"9112\"),c=r(\"6eeb\"),a=r(\"ce4e\"),u=r(\"e893\"),f=r(\"94ca\");t.exports=function(t,e){var r,s,l,p,d,v,g=t.target,b=t.global,h=t.stat;if(s=b?n:h?n[g]||a(g,{}):(n[g]||{}).prototype,s)for(l in e){if(d=e[l],t.noTargetGet?(v=o(s,l),p=v&&v.value):p=s[l],r=f(b?l:g+(h?\".\":\"#\")+l,t.forced),!r&&void 0!==p){if(typeof d===typeof p)continue;u(d,p)}(t.sham||p&&p.sham)&&i(d,\"sham\",!0),c(s,l,d,t)}}},\"241c\":function(t,e,r){var n=r(\"ca84\"),o=r(\"7839\"),i=o.concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},\"24fb\":function(t,e,r){\"use strict\";function n(t,e){var r=t[1]||\"\",n=t[3];if(!n)return r;if(e&&\"function\"===typeof btoa){var i=o(n),c=n.sources.map((function(t){return\"/*# sourceURL=\".concat(n.sourceRoot||\"\").concat(t,\" */\")}));return[r].concat(c).concat([i]).join(\"\\n\")}return[r].join(\"\\n\")}function o(t){var e=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),r=\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(e);return\"/*# \".concat(r,\" */\")}t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r=n(e,t);return e[2]?\"@media \".concat(e[2],\" {\").concat(r,\"}\"):r})).join(\"\")},e.i=function(t,r,n){\"string\"===typeof t&&(t=[[null,t,\"\"]]);var o={};if(n)for(var i=0;i=74)&&(n=c.match(/Chrome\\/(\\d+)/),n&&(o=n[1]))),t.exports=o&&+o},\"30b7\":function(t,e,r){var n=r(\"f7ca\");\"string\"===typeof n&&(n=[[t.i,n,\"\"]]),n.locals&&(t.exports=n.locals);var o=r(\"499e\").default;o(\"94b19e3e\",n,!0,{sourceMap:!1,shadowMode:!1})},\"342f\":function(t,e,r){var n=r(\"d066\");t.exports=n(\"navigator\",\"userAgent\")||\"\"},\"35a1\":function(t,e,r){var n=r(\"f5df\"),o=r(\"3f8c\"),i=r(\"b622\"),c=i(\"iterator\");t.exports=function(t){if(void 0!=t)return t[c]||t[\"@@iterator\"]||o[n(t)]}},\"37e8\":function(t,e,r){var n=r(\"83ab\"),o=r(\"9bf2\"),i=r(\"825a\"),c=r(\"df75\");t.exports=n?Object.defineProperties:function(t,e){i(t);var r,n=c(e),a=n.length,u=0;while(a>u)o.f(t,r=n[u++],e[r]);return t}},\"3bbe\":function(t,e,r){var n=r(\"861d\");t.exports=function(t){if(!n(t)&&null!==t)throw TypeError(\"Can't set \"+String(t)+\" as a prototype\");return t}},\"3ca3\":function(t,e,r){\"use strict\";var n=r(\"6547\").charAt,o=r(\"69f3\"),i=r(\"7dd0\"),c=\"String Iterator\",a=o.set,u=o.getterFor(c);i(String,\"String\",(function(t){a(this,{type:c,string:String(t),index:0})}),(function(){var t,e=u(this),r=e.string,o=e.index;return o>=r.length?{value:void 0,done:!0}:(t=n(r,o),e.index+=t.length,{value:t,done:!1})}))},\"3f8c\":function(t,e){t.exports={}},\"428f\":function(t,e,r){var n=r(\"da84\");t.exports=n},\"44ad\":function(t,e,r){var n=r(\"d039\"),o=r(\"c6b6\"),i=\"\".split;t.exports=n((function(){return!Object(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"==o(t)?i.call(t,\"\"):Object(t)}:Object},\"44d2\":function(t,e,r){var n=r(\"b622\"),o=r(\"7c73\"),i=r(\"9bf2\"),c=n(\"unscopables\"),a=Array.prototype;void 0==a[c]&&i.f(a,c,{configurable:!0,value:o(null)}),t.exports=function(t){a[c][t]=!0}},4930:function(t,e,r){var n=r(\"d039\");t.exports=!!Object.getOwnPropertySymbols&&!n((function(){return!String(Symbol())}))},\"499e\":function(t,e,r){\"use strict\";function n(t,e){for(var r=[],n={},o=0;or.parts.length&&(n.parts.length=r.parts.length)}else{var c=[];for(o=0;os)if(a=u[s++],a!=a)return!0}else for(;f>s;s++)if((t||s in u)&&u[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},\"4df4\":function(t,e,r){\"use strict\";var n=r(\"0366\"),o=r(\"7b0b\"),i=r(\"9bdd\"),c=r(\"e95a\"),a=r(\"50c4\"),u=r(\"8418\"),f=r(\"35a1\");t.exports=function(t){var e,r,s,l,p,d,v=o(t),g=\"function\"==typeof this?this:Array,b=arguments.length,h=b>1?arguments[1]:void 0,y=void 0!==h,x=f(v),m=0;if(y&&(h=n(h,b>2?arguments[2]:void 0,2)),void 0==x||g==Array&&c(x))for(e=a(v.length),r=new g(e);e>m;m++)d=y?h(v[m],m):v[m],u(r,m,d);else for(l=x.call(v),p=l.next,r=new g;!(s=p.call(l)).done;m++)d=y?i(l,h,[s.value,m],!0):s.value,u(r,m,d);return r.length=m,r}},\"50c4\":function(t,e,r){var n=r(\"a691\"),o=Math.min;t.exports=function(t){return t>0?o(n(t),9007199254740991):0}},5135:function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},5319:function(t,e,r){\"use strict\";var n=r(\"d784\"),o=r(\"825a\"),i=r(\"7b0b\"),c=r(\"50c4\"),a=r(\"a691\"),u=r(\"1d80\"),f=r(\"8aa5\"),s=r(\"14c3\"),l=Math.max,p=Math.min,d=Math.floor,v=/\\$([$&'`]|\\d\\d?|<[^>]*>)/g,g=/\\$([$&'`]|\\d\\d?)/g,b=function(t){return void 0===t?t:String(t)};n(\"replace\",2,(function(t,e,r,n){var h=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,y=n.REPLACE_KEEPS_$0,x=h?\"$\":\"$0\";return[function(r,n){var o=u(this),i=void 0==r?void 0:r[t];return void 0!==i?i.call(r,o,n):e.call(String(o),r,n)},function(t,n){if(!h&&y||\"string\"===typeof n&&-1===n.indexOf(x)){var i=r(e,t,this,n);if(i.done)return i.value}var u=o(t),d=String(this),v=\"function\"===typeof n;v||(n=String(n));var g=u.global;if(g){var S=u.unicode;u.lastIndex=0}var w=[];while(1){var O=s(u,d);if(null===O)break;if(w.push(O),!g)break;var E=String(O[0]);\"\"===E&&(u.lastIndex=f(d,c(u.lastIndex),S))}for(var j=\"\",k=0,A=0;A=k&&(j+=d.slice(k,T)+_,k=T+I.length)}return j+d.slice(k)}];function m(t,r,n,o,c,a){var u=n+t.length,f=o.length,s=g;return void 0!==c&&(c=i(c),s=v),e.call(a,s,(function(e,i){var a;switch(i.charAt(0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return r.slice(0,n);case\"'\":return r.slice(u);case\"<\":a=c[i.slice(1,-1)];break;default:var s=+i;if(0===s)return e;if(s>f){var l=d(s/10);return 0===l?e:l<=f?void 0===o[l-1]?i.charAt(1):o[l-1]+i.charAt(1):e}a=o[s-1]}return void 0===a?\"\":a}))}}))},5692:function(t,e,r){var n=r(\"c430\"),o=r(\"c6cd\");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:\"3.6.5\",mode:n?\"pure\":\"global\",copyright:\"© 2020 Denis Pushkarev (zloirock.ru)\"})},\"56ef\":function(t,e,r){var n=r(\"d066\"),o=r(\"241c\"),i=r(\"7418\"),c=r(\"825a\");t.exports=n(\"Reflect\",\"ownKeys\")||function(t){var e=o.f(c(t)),r=i.f;return r?e.concat(r(t)):e}},5899:function(t,e){t.exports=\"\\t\\n\\v\\f\\r                 \\u2028\\u2029\\ufeff\"},\"58a8\":function(t,e,r){var n=r(\"1d80\"),o=r(\"5899\"),i=\"[\"+o+\"]\",c=RegExp(\"^\"+i+i+\"*\"),a=RegExp(i+i+\"*$\"),u=function(t){return function(e){var r=String(n(e));return 1&t&&(r=r.replace(c,\"\")),2&t&&(r=r.replace(a,\"\")),r}};t.exports={start:u(1),end:u(2),trim:u(3)}},\"5c6c\":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},6547:function(t,e,r){var n=r(\"a691\"),o=r(\"1d80\"),i=function(t){return function(e,r){var i,c,a=String(o(e)),u=n(r),f=a.length;return u<0||u>=f?t?\"\":void 0:(i=a.charCodeAt(u),i<55296||i>56319||u+1===f||(c=a.charCodeAt(u+1))<56320||c>57343?t?a.charAt(u):i:t?a.slice(u,u+2):c-56320+(i-55296<<10)+65536)}};t.exports={codeAt:i(!1),charAt:i(!0)}},\"65f0\":function(t,e,r){var n=r(\"861d\"),o=r(\"e8b5\"),i=r(\"b622\"),c=i(\"species\");t.exports=function(t,e){var r;return o(t)&&(r=t.constructor,\"function\"!=typeof r||r!==Array&&!o(r.prototype)?n(r)&&(r=r[c],null===r&&(r=void 0)):r=void 0),new(void 0===r?Array:r)(0===e?0:e)}},\"69f3\":function(t,e,r){var n,o,i,c=r(\"7f9a\"),a=r(\"da84\"),u=r(\"861d\"),f=r(\"9112\"),s=r(\"5135\"),l=r(\"f772\"),p=r(\"d012\"),d=a.WeakMap,v=function(t){return i(t)?o(t):n(t,{})},g=function(t){return function(e){var r;if(!u(e)||(r=o(e)).type!==t)throw TypeError(\"Incompatible receiver, \"+t+\" required\");return r}};if(c){var b=new d,h=b.get,y=b.has,x=b.set;n=function(t,e){return x.call(b,t,e),e},o=function(t){return h.call(b,t)||{}},i=function(t){return y.call(b,t)}}else{var m=l(\"state\");p[m]=!0,n=function(t,e){return f(t,m,e),e},o=function(t){return s(t,m)?t[m]:{}},i=function(t){return s(t,m)}}t.exports={set:n,get:o,has:i,enforce:v,getterFor:g}},\"6eeb\":function(t,e,r){var n=r(\"da84\"),o=r(\"9112\"),i=r(\"5135\"),c=r(\"ce4e\"),a=r(\"8925\"),u=r(\"69f3\"),f=u.get,s=u.enforce,l=String(String).split(\"String\");(t.exports=function(t,e,r,a){var u=!!a&&!!a.unsafe,f=!!a&&!!a.enumerable,p=!!a&&!!a.noTargetGet;\"function\"==typeof r&&(\"string\"!=typeof e||i(r,\"name\")||o(r,\"name\",e),s(r).source=l.join(\"string\"==typeof e?e:\"\")),t!==n?(u?!p&&t[e]&&(f=!0):delete t[e],f?t[e]=r:o(t,e,r)):f?t[e]=r:c(e,r)})(Function.prototype,\"toString\",(function(){return\"function\"==typeof this&&f(this).source||a(this)}))},7156:function(t,e,r){var n=r(\"861d\"),o=r(\"d2bb\");t.exports=function(t,e,r){var i,c;return o&&\"function\"==typeof(i=e.constructor)&&i!==r&&n(c=i.prototype)&&c!==r.prototype&&o(t,c),t}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},\"746f\":function(t,e,r){var n=r(\"428f\"),o=r(\"5135\"),i=r(\"e538\"),c=r(\"9bf2\").f;t.exports=function(t){var e=n.Symbol||(n.Symbol={});o(e,t)||c(e,t,{value:i.f(t)})}},7839:function(t,e){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},\"7b0b\":function(t,e,r){var n=r(\"1d80\");t.exports=function(t){return Object(n(t))}},\"7c73\":function(t,e,r){var n,o=r(\"825a\"),i=r(\"37e8\"),c=r(\"7839\"),a=r(\"d012\"),u=r(\"1be4\"),f=r(\"cc12\"),s=r(\"f772\"),l=\">\",p=\"<\",d=\"prototype\",v=\"script\",g=s(\"IE_PROTO\"),b=function(){},h=function(t){return p+v+l+t+p+\"/\"+v+l},y=function(t){t.write(h(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e},x=function(){var t,e=f(\"iframe\"),r=\"java\"+v+\":\";return e.style.display=\"none\",u.appendChild(e),e.src=String(r),t=e.contentWindow.document,t.open(),t.write(h(\"document.F=Object\")),t.close(),t.F},m=function(){try{n=document.domain&&new ActiveXObject(\"htmlfile\")}catch(e){}m=n?y(n):x();var t=c.length;while(t--)delete m[d][c[t]];return m()};a[g]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(b[d]=o(t),r=new b,b[d]=null,r[g]=t):r=m(),void 0===e?r:i(r,e)}},\"7dd0\":function(t,e,r){\"use strict\";var n=r(\"23e7\"),o=r(\"9ed3\"),i=r(\"e163\"),c=r(\"d2bb\"),a=r(\"d44e\"),u=r(\"9112\"),f=r(\"6eeb\"),s=r(\"b622\"),l=r(\"c430\"),p=r(\"3f8c\"),d=r(\"ae93\"),v=d.IteratorPrototype,g=d.BUGGY_SAFARI_ITERATORS,b=s(\"iterator\"),h=\"keys\",y=\"values\",x=\"entries\",m=function(){return this};t.exports=function(t,e,r,s,d,S,w){o(r,e,s);var O,E,j,k=function(t){if(t===d&&N)return N;if(!g&&t in T)return T[t];switch(t){case h:return function(){return new r(this,t)};case y:return function(){return new r(this,t)};case x:return function(){return new r(this,t)}}return function(){return new r(this)}},A=e+\" Iterator\",I=!1,T=t.prototype,C=T[b]||T[\"@@iterator\"]||d&&T[d],N=!g&&C||k(d),P=\"Array\"==e&&T.entries||C;if(P&&(O=i(P.call(new t)),v!==Object.prototype&&O.next&&(l||i(O)===v||(c?c(O,v):\"function\"!=typeof O[b]&&u(O,b,m)),a(O,A,!0,!0),l&&(p[A]=m))),d==y&&C&&C.name!==y&&(I=!0,N=function(){return C.call(this)}),l&&!w||T[b]===N||u(T,b,N),p[e]=N,d)if(E={values:k(y),keys:S?N:k(h),entries:k(x)},w)for(j in E)(g||I||!(j in T))&&f(T,j,E[j]);else n({target:e,proto:!0,forced:g||I},E);return E}},\"7f9a\":function(t,e,r){var n=r(\"da84\"),o=r(\"8925\"),i=n.WeakMap;t.exports=\"function\"===typeof i&&/native code/.test(o(i))},\"825a\":function(t,e,r){var n=r(\"861d\");t.exports=function(t){if(!n(t))throw TypeError(String(t)+\" is not an object\");return t}},\"83ab\":function(t,e,r){var n=r(\"d039\");t.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,r){\"use strict\";var n=r(\"c04e\"),o=r(\"9bf2\"),i=r(\"5c6c\");t.exports=function(t,e,r){var c=n(e);c in t?o.f(t,c,i(0,r)):t[c]=r}},\"861d\":function(t,e){t.exports=function(t){return\"object\"===typeof t?null!==t:\"function\"===typeof t}},8875:function(t,e,r){var n,o,i;(function(r,c){o=[],n=c,i=\"function\"===typeof n?n.apply(e,o):n,void 0===i||(t.exports=i)})(\"undefined\"!==typeof self&&self,(function(){function t(){var e=Object.getOwnPropertyDescriptor(document,\"currentScript\");if(!e&&\"currentScript\"in document&&document.currentScript)return document.currentScript;if(e&&e.get!==t&&document.currentScript)return document.currentScript;try{throw new Error}catch(d){var r,n,o,i=/.*at [^(]*\\((.*):(.+):(.+)\\)$/gi,c=/@([^@]*):(\\d+):(\\d+)\\s*$/gi,a=i.exec(d.stack)||c.exec(d.stack),u=a&&a[1]||!1,f=a&&a[2]||!1,s=document.location.href.replace(document.location.hash,\"\"),l=document.getElementsByTagName(\"script\");u===s&&(r=document.documentElement.outerHTML,n=new RegExp(\"(?:[^\\\\n]+?\\\\n){0,\"+(f-2)+\"}[^<]*\n\n","const removeElement = (el) => {\n if (typeof el.remove !== 'undefined') {\n el.remove()\n } else {\n el.parentNode.removeChild(el)\n }\n}\n\nexport { removeElement }\n","// https://stackoverflow.com/a/3969760\nexport default class Timer {\n constructor(callback, delay) {\n this.startedAt = Date.now()\n this.callback = callback\n this.delay = delay\n\n this.timer = setTimeout(callback, delay)\n }\n\n pause() {\n this.stop()\n this.delay -= Date.now() - this.startedAt\n }\n\n resume() {\n this.stop()\n this.startedAt = Date.now()\n this.timer = setTimeout(this.callback, this.delay)\n }\n\n stop() {\n clearTimeout(this.timer)\n }\n}\n","const POSITIONS = {\n TOP_RIGHT: 'top-right',\n TOP: 'top',\n TOP_LEFT: 'top-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM: 'bottom',\n BOTTOM_LEFT: 'bottom-left'\n}\nexport default Object.freeze(POSITIONS)\n\nexport function definePosition(position, top, bottom) {\n let result = null\n switch (position) {\n case POSITIONS.TOP:\n case POSITIONS.TOP_RIGHT:\n case POSITIONS.TOP_LEFT:\n result = top\n break\n\n case POSITIONS.BOTTOM:\n case POSITIONS.BOTTOM_RIGHT:\n case POSITIONS.BOTTOM_LEFT:\n result = bottom\n break\n }\n return result\n}\n","class Event {\n constructor() {\n this.queue = {}\n }\n\n $on(name, callback) {\n this.queue[name] = this.queue[name] || []\n this.queue[name].push(callback)\n }\n\n $off(name, callback) {\n if (this.queue[name]) {\n for (var i = 0; i < this.queue[name].length; i++) {\n if (this.queue[name][i] === callback) {\n this.queue[name].splice(i, 1)\n break\n }\n }\n }\n }\n\n $emit(name, data) {\n if (this.queue[name]) {\n this.queue[name].forEach(function (callback) {\n callback(data)\n })\n }\n }\n}\n\nexport default new Event()\n","import { render } from \"./Toaster.vue?vue&type=template&id=c500bdfe\"\nimport script from \"./Toaster.vue?vue&type=script&lang=js\"\nexport * from \"./Toaster.vue?vue&type=script&lang=js\"\n\nimport \"./Toaster.vue?vue&type=style&index=0&id=c500bdfe&lang=stylus\"\nscript.render = render\n\nexport default script","import { render, h } from 'vue'\n\nconst createElement = () =>\n typeof document !== 'undefined' && document.createElement('div')\n\nconst mount = (component, { props, children, element, app } = {}) => {\n let el = element ? element : createElement()\n\n let vNode = h(component, props, children)\n if (app && app._context) {\n vNode.appContext = app._context\n }\n\n render(vNode, el)\n\n const destroy = () => {\n if (el) {\n render(null, el)\n }\n el = null\n vNode = null\n }\n\n return { vNode, destroy, el }\n}\n\nexport default mount\n","import Toaster from './Toaster.vue'\nimport eventBus from './helpers/event-bus.js'\nimport mount from './helpers/mount-component'\n\nconst Api = (globalOptions = {}) => {\n return {\n show(message, options = {}) {\n let localOptions = { message, ...options }\n const c = mount(Toaster, {\n props: { ...globalOptions, ...localOptions }\n })\n return c\n },\n clear() {\n eventBus.$emit('toast-clear')\n },\n success(message, options = {}) {\n options.type = 'success'\n return this.show(message, options)\n },\n error(message, options = {}) {\n options.type = 'error'\n return this.show(message, options)\n },\n info(message, options = {}) {\n options.type = 'info'\n return this.show(message, options)\n },\n warning(message, options = {}) {\n options.type = 'warning'\n return this.show(message, options)\n }\n }\n}\n\nexport default Api\n","import Toaster from './Toaster.vue'\nimport Api from './api.js'\nimport Positions from './defaults/positions.js'\n\nconst Plugin = (app, options = {}) => {\n let methods = Api(options)\n app.$toast = methods\n app.config.globalProperties.$toast = methods\n}\n\nToaster.install = Plugin\n\nexport default Toaster\nexport { Toaster, Positions }\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\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","(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 ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","(function UMD(name,context,definition){\n\t/* istanbul ignore next */if (typeof define === \"function\" && define.amd) { define(definition); }\n\t/* istanbul ignore next */else if (typeof module !== \"undefined\" && module.exports) { module.exports = definition(name,context); }\n\t/* istanbul ignore next */else { context[name] = definition(name,context); }\n})(\"CAF\",this,function DEF(name,context){\n\t\"use strict\";\n\n\tclass cancelToken {\n\t\tconstructor(controller = new AbortController()) {\n\t\t\tthis.controller = controller;\n\t\t\tthis.signal = controller.signal;\n\t\t\t// note: => arrow function used here for lexical this\n\t\t\tvar handleReject = (res,rej) => {\n\t\t\t\tonce(this.signal, \"abort\", r => {\n\t\t\t\t\tif (!(\"reason\" in this.signal)) {\n\t\t\t\t\t\tthis.signal.reason = r;\n\t\t\t\t\t}\n\t\t\t\t\trej(r);\n\t\t\t\t});\n\t\t\t\tthis.rej = rej;\n\t\t\t};\n\t\t\tthis.signal.pr = new Promise(handleReject);\n\t\t\t// silence unhandled rejection warnings\n\t\t\tthis.signal.pr.catch(v=>v);\n\t\t}\n\t\tabort(reason) {\n\t\t\tif (!(\"reason\" in this.signal)) {\n\t\t\t\tthis.signal.reason = reason;\n\t\t\t}\n\t\t\tthis.rej(reason);\n\t\t\tthis.controller.abort();\n\t\t}\n\t}\n\n\tconst TIMEOUT_TOKEN = Symbol(\"Timeout Token\");\n\n\t// assign public API to CAF namespace\n\tObject.assign(CAF,{\n\t\tcancelToken,\n\t\tdelay,\n\t\ttimeout,\n\t\tsignalRace,\n\t\tsignalAll,\n\t});\n\n\treturn CAF;\n\n\n\t// ***************************************\n\n\tfunction CAF(generatorFn) {\n\t\treturn function instance(tokenOrSignal,...args){\n\t\t\tvar signal, signalPr;\n\t\t\t({ tokenOrSignal, signal, signalPr, } = processTokenOrSignal(tokenOrSignal));\n\n\t\t\t// already aborted?\n\t\t\tif (signal.aborted) {\n\t\t\t\treturn signalPr;\n\t\t\t}\n\t\t\t// listen for abort signal\n\t\t\tvar cancelation = signalPr.catch(function onCancelation(reason){\n\t\t\t\ttry {\n\t\t\t\t\tvar ret = it.return();\n\t\t\t\t\tthrow ((ret.value !== undefined) ? ret.value : reason);\n\t\t\t\t}\n\t\t\t\t// clean up memory\n\t\t\t\tfinally { it = result = cancelation = completion = null; }\n\t\t\t});\n\t\t\tvar { it, result, } = _runner.call(this,generatorFn,signal,...args);\n\t\t\tvar completion = Promise.race([ result, cancelation, ]);\n\t\t\tif (\n\t\t\t\t// cancelation token passed in?\n\t\t\t\ttokenOrSignal !== signal &&\n\t\t\t\t// recognized special timeout token?\n\t\t\t\ttokenOrSignal[TIMEOUT_TOKEN]\n\t\t\t) {\n\t\t\t\t// cancel timeout upon instance completion\n\t\t\t\tcompletion.then(\n\t\t\t\t\tfunction t(){ tokenOrSignal.abort(); },\n\t\t\t\t\tfunction c(){ tokenOrSignal.abort(); }\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// silence unhandled rejection warnings\n\t\t\t\tcompletion.catch(Function.prototype);\n\t\t\t}\n\t\t\tsignal = args = null; // clean up memory\n\t\t\treturn completion;\n\t\t};\n\t}\n\n\tfunction delay(tokenOrSignal,ms) {\n\t\t// was delay ms passed first?\n\t\tif (\n\t\t\ttypeof tokenOrSignal == \"number\" &&\n\t\t\ttypeof ms != \"number\"\n\t\t) {\n\t\t\t// swap arguments\n\t\t\t[ms,tokenOrSignal,] = [tokenOrSignal,ms,];\n\t\t}\n\n\t\tvar signal, signalPr;\n\t\tif (tokenOrSignal) {\n\t\t\t({ tokenOrSignal, signal, signalPr, } = processTokenOrSignal(tokenOrSignal));\n\t\t}\n\n\t\t// already aborted?\n\t\tif (signal && signal.aborted) {\n\t\t\treturn signalPr;\n\t\t}\n\n\t\treturn new Promise(function c(res,rej){\n\t\t\tif (signal) {\n\t\t\t\tsignalPr.catch(function onAbort(){\n\t\t\t\t\tif (intv) {\n\t\t\t\t\t\tclearTimeout(intv);\n\t\t\t\t\t\trej(`delay (${ms}) interrupted`);\n\t\t\t\t\t}\n\t\t\t\t\tres = rej = intv = signal = null;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar intv = setTimeout(function onTimeout(){\n\t\t\t\tres(`delayed: ${ms}`);\n\t\t\t\tres = rej = intv = signal = null;\n\t\t\t},ms);\n\t\t});\n\t}\n\n\tfunction timeout(duration,message = \"Timeout\") {\n\t\tduration = Number(duration) || 0;\n\t\tvar timeoutToken = new cancelToken();\n\t\tdelay(timeoutToken.signal,duration).then(cleanup,cleanup);\n\n\t\t// branding\n\t\tObject.defineProperty(timeoutToken,TIMEOUT_TOKEN,{\n\t\t\tvalue: true,\n\t\t\twritable: false,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: false,\n\t\t});\n\n\t\treturn timeoutToken;\n\n\n\t\t// *********************************\n\t\tfunction cleanup() {\n\t\t\ttimeoutToken.abort(message);\n\t\t\ttimeoutToken = null;\n\t\t}\n\t}\n\n\tfunction signalRace(signals) {\n\t\tvar token = new cancelToken();\n\t\tPromise.race(signals.map(getSignalPr)).catch(token.abort.bind(token));\n\t\treturn token.signal;\n\t}\n\n\tfunction signalAll(signals) {\n\t\tvar token = new cancelToken();\n\t\tvar prs = signals.map(function normalize(signal){\n\t\t\treturn getSignalPr(signal).catch(e => e);\n\t\t});\n\t\tPromise.all(prs).then(token.abort.bind(token));\n\t\treturn token.signal;\n\t}\n\n\tfunction getSignalPr(signal) {\n\t\treturn (\n\t\t\tsignal.pr ||\n\t\t\tnew Promise(function c(res,rej){\n\t\t\t\tonce(signal,\"abort\",rej);\n\t\t\t})\n\t\t);\n\t}\n\n\tfunction once(obj,evtName,fn) {\n\t\tobj.addEventListener(evtName,function onEvt(...args){\n\t\t\tobj.removeEventListener(evtName,onEvt);\n\t\t\tfn(...args);\n\t\t});\n\t}\n\n\tfunction processTokenOrSignal(tokenOrSignal) {\n\t\t// received a raw AbortController?\n\t\tif (tokenOrSignal instanceof AbortController) {\n\t\t\ttokenOrSignal = new cancelToken(tokenOrSignal);\n\t\t}\n\n\t\tvar signal = (tokenOrSignal && tokenOrSignal instanceof cancelToken) ?\n\t\t\ttokenOrSignal.signal :\n\t\t\ttokenOrSignal;\n\t\tvar signalPr = getSignalPr(signal);\n\n\t\treturn { tokenOrSignal, signal, signalPr, };\n\t}\n\n\t// thanks to Benjamin Gruenbaum (@benjamingr on GitHub) for\n\t// big improvements here!\n\tfunction _runner(gen,...args) {\n\t\t// initialize the generator in the current context\n\t\tvar it = gen.apply(this,args);\n\t\tgen = args = null; // clean up memory\n\n\t\treturn {\n\t\t\tit,\n\t\t\t// a promise for the generator completing\n\t\t\tresult: (function getNextResult(curValue){\n\t\t\t\t// NOTE: this `try` is only necessary to catch\n\t\t\t\t// an immediate exception on the first iteration\n\t\t\t\t// of the generator. The below .then(..) would\n\t\t\t\t// catch any subsequent exceptions.\n\t\t\t\ttry {\n\t\t\t\t\t// run to the next yielded value\n\t\t\t\t\tvar nextResult = it.next(curValue);\n\t\t\t\t\tcurValue = null; // clean up memory\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\t// exception becomes rejection\n\t\t\t\t\treturn Promise.reject(err);\n\t\t\t\t}\n\n\t\t\t\treturn (function processResult(nextResult){\n\t\t\t\t\tvar prNext = Promise.resolve(nextResult.value);\n\n\t\t\t\t\t// generator no longer running?\n\t\t\t\t\tif (nextResult.done) {\n\t\t\t\t\t\tit = null;\n\t\t\t\t\t}\n\t\t\t\t\t// otherwise keep going\n\t\t\t\t\telse {\n\t\t\t\t\t\tprNext = prNext.then(\n\t\t\t\t\t\t\t// resume on fulfillment, sending the\n\t\t\t\t\t\t\t// fulfilled value back into the generator\n\t\t\t\t\t\t\tgetNextResult,\n\n\t\t\t\t\t\t\t// if we receive a rejected promise,\n\t\t\t\t\t\t\t// throw the reason as exception back\n\t\t\t\t\t\t\t// into the generator for its own error\n\t\t\t\t\t\t\t// handling (if any)\n\t\t\t\t\t\t\tfunction onRejection(reason){\n\t\t\t\t\t\t\t\treturn Promise.resolve(\n\t\t\t\t\t\t\t\t\tit.throw(reason)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.then(processResult);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\t// clean up memory\n\t\t\t\t\t\tprNext.catch(function cleanup(){ it = null; });\n\t\t\t\t\t}\n\n\t\t\t\t\tnextResult = null; // clean up memory\n\t\t\t\t\treturn prNext;\n\t\t\t\t})(nextResult);\n\t\t\t})(),\n\t\t};\n\t}\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","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","export const HOOK_SETUP = 'devtools-plugin:setup';\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","/**\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","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\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 = \"bignumber/5.4.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\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 */\nimport _BN from \"bn.js\";\nvar BN = _BN.BN;\nimport { hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst _constructorGuard = {};\nconst MAX_SAFE = 0x1fffffffffffff;\nexport function isBigNumberish(value) {\n return (value != null) && (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// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\nexport class BigNumber {\n constructor(constructorGuard, hex) {\n logger.checkNew(new.target, BigNumber);\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 this._hex = hex;\n this._isBigNumber = true;\n Object.freeze(this);\n }\n fromTwos(value) {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n toTwos(value) {\n return toBigNumber(toBN(this).toTwos(value));\n }\n abs() {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n add(other) {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n sub(other) {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n div(other) {\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 mul(other) {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n mod(other) {\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 pow(other) {\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 and(other) {\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 or(other) {\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 xor(other) {\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 mask(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"cannot mask negative values\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n shl(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"cannot shift negative values\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n shr(value) {\n if (this.isNegative() || value < 0) {\n throwFault(\"cannot shift negative values\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n eq(other) {\n return toBN(this).eq(toBN(other));\n }\n lt(other) {\n return toBN(this).lt(toBN(other));\n }\n lte(other) {\n return toBN(this).lte(toBN(other));\n }\n gt(other) {\n return toBN(this).gt(toBN(other));\n }\n gte(other) {\n return toBN(this).gte(toBN(other));\n }\n isNegative() {\n return (this._hex[0] === \"-\");\n }\n isZero() {\n return toBN(this).isZero();\n }\n toNumber() {\n try {\n return toBN(this).toNumber();\n }\n catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n toBigInt() {\n try {\n return BigInt(this.toString());\n }\n catch (e) { }\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n toString() {\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 }\n else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, {});\n }\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 toHexString() {\n return this._hex;\n }\n toJSON(key) {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n static from(value) {\n if (value instanceof BigNumber) {\n 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 if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n if (typeof (value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n return BigNumber.from(String(value));\n }\n const anyValue = value;\n if (typeof (anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n if (anyValue) {\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 // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\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 return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n static isBigNumber(value) {\n return !!(value && value._isBigNumber);\n }\n}\n// Normalize the hex string\nfunction toHex(value) {\n // For BN, call on the hex string\n if (typeof (value) !== \"string\") {\n return toHex(value.toString(16));\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 // Cannot have mulitple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") {\n logger.throwArgumentError(\"invalid hex\", \"value\", value);\n }\n // Call toHex on the positive component\n value = toHex(value);\n // Do not allow \"-0x00\"\n if (value === \"0x00\") {\n return value;\n }\n // Negate the value\n return \"-\" + value;\n }\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n // Normalize zero\n if (value === \"0x\") {\n return \"0x00\";\n }\n // Make the string even length\n if (value.length % 2) {\n 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 return value;\n}\nfunction toBigNumber(value) {\n return BigNumber.from(toHex(value));\n}\nfunction toBN(value) {\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}\nfunction throwFault(fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value != null) {\n params.value = value;\n }\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n// value should have no prefix\nexport function _base36To16(value) {\n return (new BN(value, 36)).toString(16);\n}\n// value should have no prefix\nexport function _base16To36(value) {\n return (new BN(value, 16)).toString(36);\n}\n//# sourceMappingURL=bignumber.js.map","export const version = \"properties/5.4.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function defineReadOnly(object, name, value) {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor, key) {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) {\n return ctor[key];\n }\n if (!ctor.prototype || typeof (ctor.prototype) !== \"object\") {\n break;\n }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\nexport function resolveProperties(object) {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = Object.keys(object).map((key) => {\n const value = object[key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n const results = yield Promise.all(promises);\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, {});\n });\n}\nexport function checkProperties(object, properties) {\n if (!object || typeof (object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\nexport function shallowCopy(object) {\n const result = {};\n for (const key in object) {\n result[key] = object[key];\n }\n return result;\n}\nconst opaque = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\nfunction _isFrozen(object) {\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof (object)]) {\n return true;\n }\n if (Array.isArray(object) || typeof (object) === \"object\") {\n if (!Object.isFrozen(object)) {\n return false;\n }\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value = null;\n try {\n value = object[keys[i]];\n }\n catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n if (!_isFrozen(value)) {\n return false;\n }\n }\n return true;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\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) {\n if (_isFrozen(object)) {\n 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 if (typeof (object) === \"object\") {\n const result = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) {\n continue;\n }\n defineReadOnly(result, key, deepCopy(value));\n }\n return result;\n }\n return logger.throwArgumentError(`Cannot deepCopy ${typeof (object)}`, \"object\", object);\n}\nexport function deepCopy(object) {\n return _deepCopy(object);\n}\nexport class Description {\n constructor(info) {\n for (const key in info) {\n this[key] = deepCopy(info[key]);\n }\n }\n}\n//# sourceMappingURL=index.js.map","export const version = \"abi/5.4.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexConcat, hexlify } from \"@ethersproject/bytes\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\nexport function checkResultErrors(result) {\n // Find the first error (if any)\n const errors = [];\n const checkErrors = function (path, object) {\n if (!Array.isArray(object)) {\n return;\n }\n for (let key in object) {\n const childPath = path.slice();\n childPath.push(key);\n try {\n checkErrors(childPath, object[key]);\n }\n catch (error) {\n errors.push({ path: childPath, error: error });\n }\n }\n };\n checkErrors([], result);\n return errors;\n}\nexport class Coder {\n constructor(name, type, localName, dynamic) {\n // @TODO: defineReadOnly these\n this.name = name;\n this.type = type;\n this.localName = localName;\n this.dynamic = dynamic;\n }\n _throwError(message, value) {\n logger.throwArgumentError(message, this.localName, value);\n }\n}\nexport class Writer {\n constructor(wordSize) {\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n this._data = [];\n this._dataLength = 0;\n this._padding = new Uint8Array(wordSize);\n }\n get data() {\n return hexConcat(this._data);\n }\n get length() { return this._dataLength; }\n _writeData(data) {\n this._data.push(data);\n this._dataLength += data.length;\n return data.length;\n }\n appendWriter(writer) {\n return this._writeData(concat(writer._data));\n }\n // Arrayish items; padded on the right to wordSize\n writeBytes(value) {\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 _getValue(value) {\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 // BigNumberish items; padded on the left to wordSize\n writeValue(value) {\n return this._writeData(this._getValue(value));\n }\n writeUpdatableValue() {\n const offset = this._data.length;\n this._data.push(this._padding);\n this._dataLength += this.wordSize;\n return (value) => {\n this._data[offset] = this._getValue(value);\n };\n }\n}\nexport class Reader {\n constructor(data, wordSize, coerceFunc, allowLoose) {\n defineReadOnly(this, \"_data\", arrayify(data));\n defineReadOnly(this, \"wordSize\", wordSize || 32);\n defineReadOnly(this, \"_coerceFunc\", coerceFunc);\n defineReadOnly(this, \"allowLoose\", allowLoose);\n this._offset = 0;\n }\n get data() { return hexlify(this._data); }\n get consumed() { return this._offset; }\n // The default Coerce function\n static coerce(name, value) {\n let match = name.match(\"^u?int([0-9]+)$\");\n if (match && parseInt(match[1]) <= 48) {\n value = value.toNumber();\n }\n return value;\n }\n coerce(name, value) {\n if (this._coerceFunc) {\n return this._coerceFunc(name, value);\n }\n return Reader.coerce(name, value);\n }\n _peekBytes(offset, length, loose) {\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 }\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 subReader(offset) {\n return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);\n }\n readBytes(length, loose) {\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 readValue() {\n return BigNumber.from(this.readBytes(this.wordSize));\n }\n}\n//# sourceMappingURL=abstract-coder.js.map","\"use strict\";\nimport sha3 from \"js-sha3\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function keccak256(data) {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n//# sourceMappingURL=index.js.map","export const version = \"rlp/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n//See: https://github.com/ethereum/wiki/wiki/RLP\nimport { arrayify, hexlify, isBytesLike } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction arrayifyInteger(value) {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\nfunction unarrayifyInteger(data, offset, length) {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\nfunction _encode(object) {\n if (Array.isArray(object)) {\n let payload = [];\n object.forEach(function (child) {\n payload = payload.concat(_encode(child));\n });\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length);\n return payload;\n }\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n return length.concat(payload);\n }\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n const data = Array.prototype.slice.call(arrayify(object));\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 const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n return length.concat(data);\n}\nexport function encode(object) {\n return hexlify(_encode(object));\n}\nfunction _decodeChildren(data, offset, childOffset, length) {\n const result = [];\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n result.push(decoded.result);\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, {});\n }\n }\n return { consumed: (1 + length), result: result };\n}\n// returns { consumed: number, result: Object }\nfunction _decode(data, offset) {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, {});\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 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 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 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 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 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 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}\nexport function decode(data) {\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//# sourceMappingURL=index.js.map","export const version = \"address/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction getChecksumAddress(address) {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n address = address.toLowerCase();\n const chars = address.substring(2).split(\"\");\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n const hashed = arrayify(keccak256(expanded));\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 return \"0x\" + chars.join(\"\");\n}\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER = 0x1fffffffffffff;\nfunction log10(x) {\n if (Math.log10) {\n return Math.log10(x);\n }\n return Math.log(x) / Math.LN10;\n}\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n// Create lookup table\nconst ibanLookup = {};\nfor (let i = 0; i < 10; i++) {\n ibanLookup[String(i)] = String(i);\n}\nfor (let i = 0; i < 26; i++) {\n 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));\nfunction ibanChecksum(address) {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\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 let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) {\n checksum = \"0\" + checksum;\n }\n return checksum;\n}\n;\nexport function getAddress(address) {\n let result = null;\n if (typeof (address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") {\n address = \"0x\" + address;\n }\n result = getChecksumAddress(address);\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 // Maybe ICAP? (we only support direct mode)\n }\n else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\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 result = _base36To16(address.substring(4));\n while (result.length < 40) {\n result = \"0\" + result;\n }\n result = getChecksumAddress(\"0x\" + result);\n }\n else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n return result;\n}\nexport function isAddress(address) {\n try {\n getAddress(address);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getIcapAddress(address) {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) {\n base36 = \"0\" + base36;\n }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction) {\n let from = null;\n try {\n from = getAddress(transaction.from);\n }\n catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n return getAddress(hexDataSlice(keccak256(encode([from, nonce])), 12));\n}\nexport function getCreate2Address(from, salt, initCodeHash) {\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//# sourceMappingURL=index.js.map","export const version = \"strings/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nexport var UnicodeNormalizationForm;\n(function (UnicodeNormalizationForm) {\n UnicodeNormalizationForm[\"current\"] = \"\";\n UnicodeNormalizationForm[\"NFC\"] = \"NFC\";\n UnicodeNormalizationForm[\"NFD\"] = \"NFD\";\n UnicodeNormalizationForm[\"NFKC\"] = \"NFKC\";\n UnicodeNormalizationForm[\"NFKD\"] = \"NFKD\";\n})(UnicodeNormalizationForm || (UnicodeNormalizationForm = {}));\n;\nexport var Utf8ErrorReason;\n(function (Utf8ErrorReason) {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"UNEXPECTED_CONTINUE\"] = \"unexpected continuation byte\";\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"BAD_PREFIX\"] = \"bad codepoint prefix\";\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n Utf8ErrorReason[\"OVERRUN\"] = \"string overrun\";\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n Utf8ErrorReason[\"MISSING_CONTINUE\"] = \"missing continuation byte\";\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 Utf8ErrorReason[\"OUT_OF_RANGE\"] = \"out of UTF-8 range\";\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 Utf8ErrorReason[\"UTF16_SURROGATE\"] = \"UTF-16 surrogate\";\n // The string is an overlong reperesentation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n Utf8ErrorReason[\"OVERLONG\"] = \"overlong representation\";\n})(Utf8ErrorReason || (Utf8ErrorReason = {}));\n;\nfunction errorFunc(reason, offset, bytes, output, badCodepoint) {\n return logger.throwArgumentError(`invalid codepoint at offset ${offset}; ${reason}`, \"bytes\", bytes);\n}\nfunction ignoreFunc(reason, offset, bytes, output, badCodepoint) {\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) {\n break;\n }\n i++;\n }\n return i;\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 // Nothing to skip\n return 0;\n}\nfunction replaceFunc(reason, offset, bytes, output, badCodepoint) {\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 // Put the replacement character into the output\n output.push(0xfffd);\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n// Common error handing strategies\nexport const Utf8ErrorFuncs = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes, onError) {\n if (onError == null) {\n onError = Utf8ErrorFuncs.error;\n }\n bytes = arrayify(bytes);\n const result = [];\n let i = 0;\n // Invalid bytes are ignored\n while (i < bytes.length) {\n const c = bytes[i++];\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n // 1110 xxxx 10xx xxxx 10xx xxxx\n }\n else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n }\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 }\n else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\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 // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\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 // See above loop for invalid contimuation byte\n if (res === null) {\n 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 // 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 // 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 result.push(res);\n }\n return result;\n}\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str, form = UnicodeNormalizationForm.current) {\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\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 if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\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 return arrayify(result);\n}\n;\nfunction escapeChar(value) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\nexport function _toEscapedUtf8String(bytes, onError) {\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 if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\nexport function _toUtf8String(codePoints) {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode((((codePoint >> 10) & 0x3ff) + 0xd800), ((codePoint & 0x3ff) + 0xdc00));\n }).join(\"\");\n}\nexport function toUtf8String(bytes, onError) {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\nexport function toUtf8CodePoints(str, form = UnicodeNormalizationForm.current) {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n//# sourceMappingURL=utf8.js.map","import { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport function id(text) {\n return keccak256(toUtf8Bytes(text));\n}\n//# sourceMappingURL=id.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { hexZeroPad } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder\";\nexport class AddressCoder extends Coder {\n constructor(localName) {\n super(\"address\", \"address\", localName, false);\n }\n defaultValue() {\n return \"0x0000000000000000000000000000000000000000\";\n }\n encode(writer, value) {\n try {\n value = getAddress(value);\n }\n catch (error) {\n this._throwError(error.message, value);\n }\n return writer.writeValue(value);\n }\n decode(reader) {\n return getAddress(hexZeroPad(reader.readValue().toHexString(), 20));\n }\n}\n//# sourceMappingURL=address.js.map","\"use strict\";\nimport { Coder } from \"./abstract-coder\";\n// Clones the functionality of an existing Coder, but without a localName\nexport class AnonymousCoder extends Coder {\n constructor(coder) {\n super(coder.name, coder.type, undefined, coder.dynamic);\n this.coder = coder;\n }\n defaultValue() {\n return this.coder.defaultValue();\n }\n encode(writer, value) {\n return this.coder.encode(writer, value);\n }\n decode(reader) {\n return this.coder.decode(reader);\n }\n}\n//# sourceMappingURL=anonymous.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"../_version\";\nconst logger = new Logger(version);\nimport { Coder, Writer } from \"./abstract-coder\";\nimport { AnonymousCoder } from \"./anonymous\";\nexport function pack(writer, coders, values) {\n let arrayValues = null;\n if (Array.isArray(values)) {\n arrayValues = values;\n }\n else if (values && typeof (values) === \"object\") {\n let unique = {};\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 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 unique[name] = true;\n return values[name];\n });\n }\n else {\n logger.throwArgumentError(\"invalid tuple value\", \"tuple\", values);\n }\n if (coders.length !== arrayValues.length) {\n logger.throwArgumentError(\"types/value length mismatch\", \"tuple\", values);\n }\n let staticWriter = new Writer(writer.wordSize);\n let dynamicWriter = new Writer(writer.wordSize);\n let updateFuncs = [];\n coders.forEach((coder, index) => {\n let value = arrayValues[index];\n if (coder.dynamic) {\n // Get current dynamic offset (for the future pointer)\n let dynamicOffset = dynamicWriter.length;\n // Encode the dynamic value into the dynamicWriter\n coder.encode(dynamicWriter, value);\n // Prepare to populate the correct offset once we are done\n let updateFunc = staticWriter.writeUpdatableValue();\n updateFuncs.push((baseOffset) => {\n updateFunc(baseOffset + dynamicOffset);\n });\n }\n else {\n coder.encode(staticWriter, value);\n }\n });\n // Backfill all the dynamic offsets, now that we know the static length\n updateFuncs.forEach((func) => { func(staticWriter.length); });\n let length = writer.appendWriter(staticWriter);\n length += writer.appendWriter(dynamicWriter);\n return length;\n}\nexport function unpack(reader, coders) {\n let values = [];\n // A reader anchored to this base\n let baseReader = reader.subReader(0);\n coders.forEach((coder) => {\n let value = null;\n if (coder.dynamic) {\n let offset = reader.readValue();\n let offsetReader = baseReader.subReader(offset.toNumber());\n try {\n value = coder.decode(offsetReader);\n }\n catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) {\n throw error;\n }\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 }\n catch (error) {\n // Cannot recover from this\n if (error.code === Logger.errors.BUFFER_OVERRUN) {\n throw error;\n }\n value = error;\n value.baseType = coder.name;\n value.name = coder.localName;\n value.type = coder.type;\n }\n }\n if (value != undefined) {\n values.push(value);\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add any named parameters (i.e. tuples)\n coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n const value = values[index];\n if (value instanceof Error) {\n Object.defineProperty(values, name, {\n enumerable: true,\n get: () => { throw value; }\n });\n }\n else {\n values[name] = value;\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 enumerable: true,\n get: () => { throw value; }\n });\n }\n }\n return Object.freeze(values);\n}\nexport class ArrayCoder extends Coder {\n constructor(coder, length, localName) {\n const type = (coder.type + \"[\" + (length >= 0 ? length : \"\") + \"]\");\n const dynamic = (length === -1 || coder.dynamic);\n super(\"array\", type, localName, dynamic);\n this.coder = coder;\n this.length = length;\n }\n defaultValue() {\n // Verifies the child coder is valid (even if the array is dynamic or 0-length)\n const defaultChild = this.coder.defaultValue();\n const result = [];\n for (let i = 0; i < this.length; i++) {\n result.push(defaultChild);\n }\n return result;\n }\n encode(writer, value) {\n if (!Array.isArray(value)) {\n this._throwError(\"expected array value\", value);\n }\n let count = this.length;\n if (count === -1) {\n count = value.length;\n writer.writeValue(value.length);\n }\n logger.checkArgumentCount(value.length, count, \"coder array\" + (this.localName ? (\" \" + this.localName) : \"\"));\n let coders = [];\n for (let i = 0; i < value.length; i++) {\n coders.push(this.coder);\n }\n return pack(writer, coders, value);\n }\n decode(reader) {\n let count = this.length;\n if (count === -1) {\n count = reader.readValue().toNumber();\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++) {\n coders.push(new AnonymousCoder(this.coder));\n }\n return reader.coerce(this.name, unpack(reader, coders));\n }\n}\n//# sourceMappingURL=array.js.map","\"use strict\";\nimport { Coder } from \"./abstract-coder\";\nexport class BooleanCoder extends Coder {\n constructor(localName) {\n super(\"bool\", \"bool\", localName, false);\n }\n defaultValue() {\n return false;\n }\n encode(writer, value) {\n return writer.writeValue(value ? 1 : 0);\n }\n decode(reader) {\n return reader.coerce(this.type, !reader.readValue().isZero());\n }\n}\n//# sourceMappingURL=boolean.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder\";\nexport class DynamicBytesCoder extends Coder {\n constructor(type, localName) {\n super(type, type, localName, true);\n }\n defaultValue() {\n return \"0x\";\n }\n encode(writer, value) {\n value = arrayify(value);\n let length = writer.writeValue(value.length);\n length += writer.writeBytes(value);\n return length;\n }\n decode(reader) {\n return reader.readBytes(reader.readValue().toNumber(), true);\n }\n}\nexport class BytesCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"bytes\", localName);\n }\n decode(reader) {\n return reader.coerce(this.name, hexlify(super.decode(reader)));\n }\n}\n//# sourceMappingURL=bytes.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { Coder } from \"./abstract-coder\";\n// @TODO: Merge this with bytes\nexport class FixedBytesCoder extends Coder {\n constructor(size, localName) {\n let name = \"bytes\" + String(size);\n super(name, name, localName, false);\n this.size = size;\n }\n defaultValue() {\n return (\"0x0000000000000000000000000000000000000000000000000000000000000000\").substring(0, 2 + this.size * 2);\n }\n encode(writer, value) {\n let data = arrayify(value);\n if (data.length !== this.size) {\n this._throwError(\"incorrect data length\", value);\n }\n return writer.writeBytes(data);\n }\n decode(reader) {\n return reader.coerce(this.name, hexlify(reader.readBytes(this.size)));\n }\n}\n//# sourceMappingURL=fixed-bytes.js.map","\"use strict\";\nimport { Coder } from \"./abstract-coder\";\nexport class NullCoder extends Coder {\n constructor(localName) {\n super(\"null\", \"\", localName, false);\n }\n defaultValue() {\n return null;\n }\n encode(writer, value) {\n if (value != null) {\n this._throwError(\"not null\", value);\n }\n return writer.writeBytes([]);\n }\n decode(reader) {\n reader.readBytes(0);\n return reader.coerce(this.name, null);\n }\n}\n//# sourceMappingURL=null.js.map","import { BigNumber } from \"@ethersproject/bignumber\";\nconst NegativeOne = ( /*#__PURE__*/BigNumber.from(-1));\nconst Zero = ( /*#__PURE__*/BigNumber.from(0));\nconst One = ( /*#__PURE__*/BigNumber.from(1));\nconst Two = ( /*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther = ( /*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256 = ( /*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\nconst MinInt256 = ( /*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256 = ( /*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\nexport { NegativeOne, Zero, One, Two, WeiPerEther, MaxUint256, MinInt256, MaxInt256, };\n//# sourceMappingURL=bignumbers.js.map","\"use strict\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { MaxUint256, NegativeOne, One, Zero } from \"@ethersproject/constants\";\nimport { Coder } from \"./abstract-coder\";\nexport class NumberCoder extends Coder {\n constructor(size, signed, localName) {\n const name = ((signed ? \"int\" : \"uint\") + (size * 8));\n super(name, name, localName, false);\n this.size = size;\n this.signed = signed;\n }\n defaultValue() {\n return 0;\n }\n encode(writer, value) {\n let v = BigNumber.from(value);\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 }\n else if (v.lt(Zero) || v.gt(maxUintValue.mask(this.size * 8))) {\n this._throwError(\"value out-of-bounds\", value);\n }\n v = v.toTwos(this.size * 8).mask(this.size * 8);\n if (this.signed) {\n v = v.fromTwos(this.size * 8).toTwos(8 * writer.wordSize);\n }\n return writer.writeValue(v);\n }\n decode(reader) {\n let value = reader.readValue().mask(this.size * 8);\n if (this.signed) {\n value = value.fromTwos(this.size * 8);\n }\n return reader.coerce(this.name, value);\n }\n}\n//# sourceMappingURL=number.js.map","\"use strict\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { DynamicBytesCoder } from \"./bytes\";\nexport class StringCoder extends DynamicBytesCoder {\n constructor(localName) {\n super(\"string\", localName);\n }\n defaultValue() {\n return \"\";\n }\n encode(writer, value) {\n return super.encode(writer, toUtf8Bytes(value));\n }\n decode(reader) {\n return toUtf8String(super.decode(reader));\n }\n}\n//# sourceMappingURL=string.js.map","\"use strict\";\nimport { Coder } from \"./abstract-coder\";\nimport { pack, unpack } from \"./array\";\nexport class TupleCoder extends Coder {\n constructor(coders, localName) {\n let dynamic = false;\n const types = [];\n coders.forEach((coder) => {\n if (coder.dynamic) {\n dynamic = true;\n }\n types.push(coder.type);\n });\n const type = (\"tuple(\" + types.join(\",\") + \")\");\n super(\"tuple\", type, localName, dynamic);\n this.coders = coders;\n }\n defaultValue() {\n const values = [];\n this.coders.forEach((coder) => {\n values.push(coder.defaultValue());\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]) {\n accum[name] = 0;\n }\n accum[name]++;\n }\n return accum;\n }, {});\n // Add named values\n this.coders.forEach((coder, index) => {\n let name = coder.localName;\n if (!name || uniqueNames[name] !== 1) {\n return;\n }\n if (name === \"length\") {\n name = \"_length\";\n }\n if (values[name] != null) {\n return;\n }\n values[name] = values[index];\n });\n return Object.freeze(values);\n }\n encode(writer, value) {\n return pack(writer, this.coders, value);\n }\n decode(reader) {\n return reader.coerce(this.name, unpack(reader, this.coders));\n }\n}\n//# sourceMappingURL=tuple.js.map","\"use strict\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n;\nconst _constructorGuard = {};\nlet ModifiersBytes = { calldata: true, memory: true, storage: true };\nlet ModifiersNest = { calldata: true, memory: true };\nfunction checkModifier(type, name) {\n if (type === \"bytes\" || type === \"string\") {\n if (ModifiersBytes[name]) {\n return true;\n }\n }\n else if (type === \"address\") {\n if (name === \"payable\") {\n return true;\n }\n }\n else if (type.indexOf(\"[\") >= 0 || type === \"tuple\") {\n if (ModifiersNest[name]) {\n return true;\n }\n }\n if (ModifiersBytes[name] || name === \"payable\") {\n logger.throwArgumentError(\"invalid modifier\", \"name\", name);\n }\n return false;\n}\n// @TODO: Make sure that children of an indexed tuple are marked with a null indexed\nfunction parseParamType(param, allowIndexed) {\n let originalParam = param;\n function throwError(i) {\n logger.throwArgumentError(`unexpected character at position ${i}`, \"param\", param);\n }\n param = param.replace(/\\s/g, \" \");\n function newNode(parent) {\n let node = { type: \"\", name: \"\", parent: parent, state: { allowType: true } };\n if (allowIndexed) {\n node.indexed = false;\n }\n return node;\n }\n let parent = { type: \"\", name: \"\", state: { allowType: true } };\n let node = parent;\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 }\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 case \")\":\n delete node.state;\n if (node.name === \"indexed\") {\n if (!allowIndexed) {\n throwError(i);\n }\n node.indexed = true;\n node.name = \"\";\n }\n if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n node.type = verifyType(node.type);\n let child = node;\n node = node.parent;\n if (!node) {\n throwError(i);\n }\n delete child.parent;\n node.state.allowParams = false;\n node.state.allowName = true;\n node.state.allowArray = true;\n break;\n case \",\":\n delete node.state;\n if (node.name === \"indexed\") {\n if (!allowIndexed) {\n throwError(i);\n }\n node.indexed = true;\n node.name = \"\";\n }\n if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n node.type = verifyType(node.type);\n let sibling = 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 // Hit a space...\n case \" \":\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 // If reading name, the name is done\n if (node.state.allowName) {\n if (node.name !== \"\") {\n if (node.name === \"indexed\") {\n if (!allowIndexed) {\n throwError(i);\n }\n if (node.indexed) {\n throwError(i);\n }\n node.indexed = true;\n node.name = \"\";\n }\n else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n else {\n node.state.allowName = false;\n }\n }\n }\n break;\n case \"[\":\n if (!node.state.allowArray) {\n throwError(i);\n }\n node.type += c;\n node.state.allowArray = false;\n node.state.allowName = false;\n node.state.readArray = true;\n break;\n case \"]\":\n if (!node.state.readArray) {\n throwError(i);\n }\n node.type += c;\n node.state.readArray = false;\n node.state.allowArray = true;\n node.state.allowName = true;\n break;\n default:\n if (node.state.allowType) {\n node.type += c;\n node.state.allowParams = true;\n node.state.allowArray = true;\n }\n else if (node.state.allowName) {\n node.name += c;\n delete node.state.allowArray;\n }\n else if (node.state.readArray) {\n node.type += c;\n }\n else {\n throwError(i);\n }\n }\n }\n if (node.parent) {\n logger.throwArgumentError(\"unexpected eof\", \"param\", param);\n }\n delete parent.state;\n if (node.name === \"indexed\") {\n if (!allowIndexed) {\n throwError(originalParam.length - 7);\n }\n if (node.indexed) {\n throwError(originalParam.length - 7);\n }\n node.indexed = true;\n node.name = \"\";\n }\n else if (checkModifier(node.type, node.name)) {\n node.name = \"\";\n }\n parent.type = verifyType(parent.type);\n return parent;\n}\nfunction populate(object, params) {\n for (let key in params) {\n defineReadOnly(object, key, params[key]);\n }\n}\nexport const FormatTypes = Object.freeze({\n // Bare formatting, as is needed for computing a sighash of an event or function\n sighash: \"sighash\",\n // Human-Readable with Minimal spacing and without names (compact human-readable)\n minimal: \"minimal\",\n // Human-Readble with nice spacing, including all names\n full: \"full\",\n // JSON-format a la Solidity\n json: \"json\"\n});\nconst paramTypeArray = new RegExp(/^(.*)\\[([0-9]*)\\]$/);\nexport class ParamType {\n constructor(constructorGuard, params) {\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"use fromString\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new ParamType()\"\n });\n }\n populate(this, params);\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 }\n else {\n populate(this, {\n arrayLength: null,\n arrayChildren: null,\n baseType: ((this.components != null) ? \"tuple\" : this.type)\n });\n }\n this._isParamType = true;\n Object.freeze(this);\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) {\n if (!format) {\n format = FormatTypes.sighash;\n }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\n }\n if (format === FormatTypes.json) {\n let result = {\n type: ((this.baseType === \"tuple\") ? \"tuple\" : this.type),\n name: (this.name || undefined)\n };\n if (typeof (this.indexed) === \"boolean\") {\n result.indexed = this.indexed;\n }\n if (this.components) {\n result.components = this.components.map((comp) => JSON.parse(comp.format(format)));\n }\n return JSON.stringify(result);\n }\n let result = \"\";\n // Array\n if (this.baseType === \"array\") {\n result += this.arrayChildren.format(format);\n result += \"[\" + (this.arrayLength < 0 ? \"\" : String(this.arrayLength)) + \"]\";\n }\n else {\n if (this.baseType === \"tuple\") {\n if (format !== FormatTypes.sighash) {\n result += this.type;\n }\n result += \"(\" + this.components.map((comp) => comp.format(format)).join((format === FormatTypes.full) ? \", \" : \",\") + \")\";\n }\n else {\n result += this.type;\n }\n }\n if (format !== FormatTypes.sighash) {\n if (this.indexed === true) {\n result += \" indexed\";\n }\n if (format === FormatTypes.full && this.name) {\n result += \" \" + this.name;\n }\n }\n return result;\n }\n static from(value, allowIndexed) {\n if (typeof (value) === \"string\") {\n return ParamType.fromString(value, allowIndexed);\n }\n return ParamType.fromObject(value);\n }\n static fromObject(value) {\n if (ParamType.isParamType(value)) {\n 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 static fromString(value, allowIndexed) {\n function ParamTypify(node) {\n return ParamType.fromObject({\n name: node.name,\n type: node.type,\n indexed: node.indexed,\n components: node.components\n });\n }\n return ParamTypify(parseParamType(value, !!allowIndexed));\n }\n static isParamType(value) {\n return !!(value != null && value._isParamType);\n }\n}\n;\nfunction parseParams(value, allowIndex) {\n return splitNesting(value).map((param) => ParamType.fromString(param, allowIndex));\n}\nexport class Fragment {\n constructor(constructorGuard, params) {\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 this._isFragment = true;\n Object.freeze(this);\n }\n static from(value) {\n if (Fragment.isFragment(value)) {\n return value;\n }\n if (typeof (value) === \"string\") {\n return Fragment.fromString(value);\n }\n return Fragment.fromObject(value);\n }\n static fromObject(value) {\n if (Fragment.isFragment(value)) {\n 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 return logger.throwArgumentError(\"invalid fragment object\", \"value\", value);\n }\n static fromString(value) {\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 if (value.split(\" \")[0] === \"event\") {\n return EventFragment.fromString(value.substring(5).trim());\n }\n else if (value.split(\" \")[0] === \"function\") {\n return FunctionFragment.fromString(value.substring(8).trim());\n }\n else if (value.split(\"(\")[0].trim() === \"constructor\") {\n return ConstructorFragment.fromString(value.trim());\n }\n else if (value.split(\" \")[0] === \"error\") {\n return ErrorFragment.fromString(value.substring(5).trim());\n }\n return logger.throwArgumentError(\"unsupported fragment\", \"value\", value);\n }\n static isFragment(value) {\n return !!(value && value._isFragment);\n }\n}\nexport class EventFragment extends Fragment {\n format(format) {\n if (!format) {\n format = FormatTypes.sighash;\n }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\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 let result = \"\";\n if (format !== FormatTypes.sighash) {\n result += \"event \";\n }\n result += this.name + \"(\" + this.inputs.map((input) => input.format(format)).join((format === FormatTypes.full) ? \", \" : \",\") + \") \";\n if (format !== FormatTypes.sighash) {\n if (this.anonymous) {\n result += \"anonymous \";\n }\n }\n return result.trim();\n }\n static from(value) {\n if (typeof (value) === \"string\") {\n return EventFragment.fromString(value);\n }\n return EventFragment.fromObject(value);\n }\n static fromObject(value) {\n if (EventFragment.isEventFragment(value)) {\n return value;\n }\n if (value.type !== \"event\") {\n logger.throwArgumentError(\"invalid event object\", \"value\", value);\n }\n const params = {\n name: verifyIdentifier(value.name),\n anonymous: value.anonymous,\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : []),\n type: \"event\"\n };\n return new EventFragment(_constructorGuard, params);\n }\n static fromString(value) {\n let match = value.match(regexParen);\n if (!match) {\n logger.throwArgumentError(\"invalid event string\", \"value\", value);\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 return EventFragment.fromObject({\n name: match[1].trim(),\n anonymous: anonymous,\n inputs: parseParams(match[2], true),\n type: \"event\"\n });\n }\n static isEventFragment(value) {\n return (value && value._isFragment && value.type === \"event\");\n }\n}\nfunction parseGas(value, params) {\n params.gas = null;\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 return value;\n}\nfunction parseModifiers(value, params) {\n params.constant = false;\n params.payable = false;\n params.stateMutability = \"nonpayable\";\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}\nfunction verifyState(value) {\n let result = {\n constant: false,\n payable: true,\n stateMutability: \"payable\"\n };\n if (value.stateMutability != null) {\n result.stateMutability = value.stateMutability;\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 // 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 // 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 result.constant = !!value.constant;\n if (result.constant) {\n result.stateMutability = \"view\";\n }\n else {\n result.stateMutability = (result.payable ? \"payable\" : \"nonpayable\");\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 return result;\n}\nexport class ConstructorFragment extends Fragment {\n format(format) {\n if (!format) {\n format = FormatTypes.sighash;\n }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\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 if (format === FormatTypes.sighash) {\n logger.throwError(\"cannot format a constructor for sighash\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"format(sighash)\"\n });\n }\n let result = \"constructor(\" + this.inputs.map((input) => input.format(format)).join((format === FormatTypes.full) ? \", \" : \",\") + \") \";\n if (this.stateMutability && this.stateMutability !== \"nonpayable\") {\n result += this.stateMutability + \" \";\n }\n return result.trim();\n }\n static from(value) {\n if (typeof (value) === \"string\") {\n return ConstructorFragment.fromString(value);\n }\n return ConstructorFragment.fromObject(value);\n }\n static fromObject(value) {\n if (ConstructorFragment.isConstructorFragment(value)) {\n return value;\n }\n if (value.type !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor object\", \"value\", value);\n }\n let state = verifyState(value);\n if (state.constant) {\n logger.throwArgumentError(\"constructor cannot be constant\", \"value\", value);\n }\n const params = {\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 return new ConstructorFragment(_constructorGuard, params);\n }\n static fromString(value) {\n let params = { type: \"constructor\" };\n value = parseGas(value, params);\n let parens = value.match(regexParen);\n if (!parens || parens[1].trim() !== \"constructor\") {\n logger.throwArgumentError(\"invalid constructor string\", \"value\", value);\n }\n params.inputs = parseParams(parens[2].trim(), false);\n parseModifiers(parens[3].trim(), params);\n return ConstructorFragment.fromObject(params);\n }\n static isConstructorFragment(value) {\n return (value && value._isFragment && value.type === \"constructor\");\n }\n}\nexport class FunctionFragment extends ConstructorFragment {\n format(format) {\n if (!format) {\n format = FormatTypes.sighash;\n }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\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 let result = \"\";\n if (format !== FormatTypes.sighash) {\n result += \"function \";\n }\n result += this.name + \"(\" + this.inputs.map((input) => input.format(format)).join((format === FormatTypes.full) ? \", \" : \",\") + \") \";\n if (format !== FormatTypes.sighash) {\n if (this.stateMutability) {\n if (this.stateMutability !== \"nonpayable\") {\n result += (this.stateMutability + \" \");\n }\n }\n else if (this.constant) {\n result += \"view \";\n }\n if (this.outputs && this.outputs.length) {\n result += \"returns (\" + this.outputs.map((output) => output.format(format)).join(\", \") + \") \";\n }\n if (this.gas != null) {\n result += \"@\" + this.gas.toString() + \" \";\n }\n }\n return result.trim();\n }\n static from(value) {\n if (typeof (value) === \"string\") {\n return FunctionFragment.fromString(value);\n }\n return FunctionFragment.fromObject(value);\n }\n static fromObject(value) {\n if (FunctionFragment.isFunctionFragment(value)) {\n return value;\n }\n if (value.type !== \"function\") {\n logger.throwArgumentError(\"invalid function object\", \"value\", value);\n }\n let state = verifyState(value);\n const params = {\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 return new FunctionFragment(_constructorGuard, params);\n }\n static fromString(value) {\n let params = { type: \"function\" };\n value = parseGas(value, params);\n let comps = value.split(\" returns \");\n if (comps.length > 2) {\n logger.throwArgumentError(\"invalid function string\", \"value\", value);\n }\n let parens = comps[0].match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid function signature\", \"value\", value);\n }\n params.name = parens[1].trim();\n if (params.name) {\n verifyIdentifier(params.name);\n }\n params.inputs = parseParams(parens[2], false);\n parseModifiers(parens[3].trim(), params);\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 }\n else {\n params.outputs = [];\n }\n return FunctionFragment.fromObject(params);\n }\n static isFunctionFragment(value) {\n return (value && value._isFragment && value.type === \"function\");\n }\n}\n//export class StructFragment extends Fragment {\n//}\nfunction checkForbidden(fragment) {\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}\nexport class ErrorFragment extends Fragment {\n format(format) {\n if (!format) {\n format = FormatTypes.sighash;\n }\n if (!FormatTypes[format]) {\n logger.throwArgumentError(\"invalid format type\", \"format\", format);\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 let result = \"\";\n if (format !== FormatTypes.sighash) {\n result += \"error \";\n }\n result += this.name + \"(\" + this.inputs.map((input) => input.format(format)).join((format === FormatTypes.full) ? \", \" : \",\") + \") \";\n return result.trim();\n }\n static from(value) {\n if (typeof (value) === \"string\") {\n return ErrorFragment.fromString(value);\n }\n return ErrorFragment.fromObject(value);\n }\n static fromObject(value) {\n if (ErrorFragment.isErrorFragment(value)) {\n return value;\n }\n if (value.type !== \"error\") {\n logger.throwArgumentError(\"invalid error object\", \"value\", value);\n }\n const params = {\n type: value.type,\n name: verifyIdentifier(value.name),\n inputs: (value.inputs ? value.inputs.map(ParamType.fromObject) : [])\n };\n return checkForbidden(new ErrorFragment(_constructorGuard, params));\n }\n static fromString(value) {\n let params = { type: \"error\" };\n let parens = value.match(regexParen);\n if (!parens) {\n logger.throwArgumentError(\"invalid error signature\", \"value\", value);\n }\n params.name = parens[1].trim();\n if (params.name) {\n verifyIdentifier(params.name);\n }\n params.inputs = parseParams(parens[2], false);\n return checkForbidden(ErrorFragment.fromObject(params));\n }\n static isErrorFragment(value) {\n return (value && value._isFragment && value.type === \"error\");\n }\n}\nfunction verifyType(type) {\n // These need to be transformed to their full description\n if (type.match(/^uint($|[^1-9])/)) {\n type = \"uint256\" + type.substring(4);\n }\n else if (type.match(/^int($|[^1-9])/)) {\n type = \"int256\" + type.substring(3);\n }\n // @TODO: more verification\n return type;\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) {\n if (!value || !value.match(regexIdentifier)) {\n logger.throwArgumentError(`invalid identifier \"${value}\"`, \"value\", value);\n }\n return value;\n}\nconst regexParen = new RegExp(\"^([^)(]*)\\\\((.*)\\\\)([^)(]*)$\");\nfunction splitNesting(value) {\n value = value.trim();\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 }\n else {\n accum += c;\n if (c === \"(\") {\n depth++;\n }\n else if (c === \")\") {\n depth--;\n if (depth === -1) {\n logger.throwArgumentError(\"unbalanced parenthesis\", \"value\", value);\n }\n }\n }\n }\n if (accum) {\n result.push(accum);\n }\n return result;\n}\n//# sourceMappingURL=fragments.js.map","\"use strict\";\n// See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { Reader, 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\";\nimport { ParamType } from \"./fragments\";\nconst paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);\nconst paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);\nexport class AbiCoder {\n constructor(coerceFunc) {\n logger.checkNew(new.target, AbiCoder);\n defineReadOnly(this, \"coerceFunc\", coerceFunc || null);\n }\n _getCoder(param) {\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 // 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 // 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 return logger.throwArgumentError(\"invalid type\", \"type\", param.type);\n }\n _getWordSize() { return 32; }\n _getReader(data, allowLoose) {\n return new Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);\n }\n _getWriter() {\n return new Writer(this._getWordSize());\n }\n getDefaultValue(types) {\n const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = new TupleCoder(coders, \"_\");\n return coder.defaultValue();\n }\n encode(types, values) {\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 const coders = types.map((type) => this._getCoder(ParamType.from(type)));\n const coder = (new TupleCoder(coders, \"_\"));\n const writer = this._getWriter();\n coder.encode(writer, values);\n return writer.data;\n }\n decode(types, data, loose) {\n const coders = 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}\nexport const defaultAbiCoder = new AbiCoder();\n//# sourceMappingURL=abi-coder.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, 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\";\nimport { defaultAbiCoder } from \"./abi-coder\";\nimport { checkResultErrors } from \"./coders/abstract-coder\";\nimport { ConstructorFragment, EventFragment, FormatTypes, Fragment, FunctionFragment, ParamType } from \"./fragments\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport { checkResultErrors };\nexport class LogDescription extends Description {\n}\nexport class TransactionDescription extends Description {\n}\nexport class ErrorDescription extends Description {\n}\nexport class Indexed extends Description {\n static isIndexed(value) {\n return !!(value && value._isIndexed);\n }\n}\nconst BuiltinErrors = {\n \"0x08c379a0\": { signature: \"Error(string)\", name: \"Error\", inputs: [\"string\"], reason: true },\n \"0x4e487b71\": { signature: \"Panic(uint256)\", name: \"Panic\", inputs: [\"uint256\"] }\n};\nfunction wrapAccessError(property, error) {\n const wrap = new Error(`deferred error during ABI decoding triggered accessing ${property}`);\n wrap.error = error;\n return wrap;\n}\n/*\nfunction checkNames(fragment: Fragment, type: \"input\" | \"output\", params: Array): 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 constructor(fragments) {\n logger.checkNew(new.target, Interface);\n let abi = [];\n if (typeof (fragments) === \"string\") {\n abi = JSON.parse(fragments);\n }\n else {\n abi = fragments;\n }\n defineReadOnly(this, \"fragments\", abi.map((fragment) => {\n return Fragment.from(fragment);\n }).filter((fragment) => (fragment != null)));\n defineReadOnly(this, \"_abiCoder\", getStatic((new.target), \"getAbiCoder\")());\n defineReadOnly(this, \"functions\", {});\n defineReadOnly(this, \"errors\", {});\n defineReadOnly(this, \"events\", {});\n defineReadOnly(this, \"structs\", {});\n // Add all fragments by their signature\n this.fragments.forEach((fragment) => {\n let bucket = 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\", fragment);\n return;\n case \"function\":\n //checkNames(fragment, \"input\", fragment.inputs);\n //checkNames(fragment, \"output\", (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 let signature = fragment.format();\n if (bucket[signature]) {\n logger.warn(\"duplicate definition - \" + signature);\n return;\n }\n bucket[signature] = fragment;\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 defineReadOnly(this, \"_isInterface\", true);\n }\n format(format) {\n if (!format) {\n format = FormatTypes.full;\n }\n if (format === FormatTypes.sighash) {\n logger.throwArgumentError(\"interface does not support formatting sighash\", \"format\", format);\n }\n const abi = this.fragments.map((fragment) => fragment.format(format));\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 return abi;\n }\n // Sub-classes can override these to handle other blockchains\n static getAbiCoder() {\n return defaultAbiCoder;\n }\n static getAddress(address) {\n return getAddress(address);\n }\n static getSighash(fragment) {\n return hexDataSlice(id(fragment.format()), 0, 4);\n }\n static getEventTopic(eventFragment) {\n return id(eventFragment.format());\n }\n // Find a function definition by any means necessary (unless it is ambiguous)\n getFunction(nameOrSignatureOrSighash) {\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 // 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 }\n else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching functions\", \"name\", name);\n }\n return this.functions[matching[0]];\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 // Find an event definition by any means necessary (unless it is ambiguous)\n getEvent(nameOrSignatureOrTopic) {\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 // 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 }\n else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching events\", \"name\", name);\n }\n return this.events[matching[0]];\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 // Find a function definition by any means necessary (unless it is ambiguous)\n getError(nameOrSignatureOrSighash) {\n if (isHexString(nameOrSignatureOrSighash)) {\n const getSighash = getStatic(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 // 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 }\n else if (matching.length > 1) {\n logger.throwArgumentError(\"multiple matching errors\", \"name\", name);\n }\n return this.errors[matching[0]];\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 // Get the sighash (the bytes4 selector) used by Solidity to identify a function\n getSighash(fragment) {\n if (typeof (fragment) === \"string\") {\n try {\n fragment = this.getFunction(fragment);\n }\n catch (error) {\n try {\n fragment = this.getError(fragment);\n }\n catch (_) {\n throw error;\n }\n }\n }\n return getStatic(this.constructor, \"getSighash\")(fragment);\n }\n // Get the topic (the bytes32 hash) used by Solidity to identify an event\n getEventTopic(eventFragment) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n return getStatic(this.constructor, \"getEventTopic\")(eventFragment);\n }\n _decodeParams(params, data) {\n return this._abiCoder.decode(params, data);\n }\n _encodeParams(params, values) {\n return this._abiCoder.encode(params, values);\n }\n encodeDeploy(values) {\n return this._encodeParams(this.deploy.inputs, values || []);\n }\n decodeErrorResult(fragment, data) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n const bytes = arrayify(data);\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 return this._decodeParams(fragment.inputs, bytes.slice(4));\n }\n encodeErrorResult(fragment, values) {\n if (typeof (fragment) === \"string\") {\n fragment = this.getError(fragment);\n }\n return hexlify(concat([\n this.getSighash(fragment),\n this._encodeParams(fragment.inputs, values || [])\n ]));\n }\n // Decode the data for a function call (e.g. tx.data)\n decodeFunctionData(functionFragment, data) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n const bytes = arrayify(data);\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 return this._decodeParams(functionFragment.inputs, bytes.slice(4));\n }\n // Encode the data for a function call (e.g. tx.data)\n encodeFunctionData(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(concat([\n this.getSighash(functionFragment),\n this._encodeParams(functionFragment.inputs, values || [])\n ]));\n }\n // Decode the result from a function call (e.g. from eth_call)\n decodeFunctionResult(functionFragment, data) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n let bytes = arrayify(data);\n let reason = null;\n let errorArgs = null;\n let errorName = null;\n let errorSignature = null;\n switch (bytes.length % this._abiCoder._getWordSize()) {\n case 0:\n try {\n return this._abiCoder.decode(functionFragment.outputs, bytes);\n }\n catch (error) { }\n break;\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) {\n reason = errorArgs[0];\n }\n }\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 }\n catch (error) {\n console.log(error);\n }\n }\n break;\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 // Encode the result for a function call (e.g. for eth_call)\n encodeFunctionResult(functionFragment, values) {\n if (typeof (functionFragment) === \"string\") {\n functionFragment = this.getFunction(functionFragment);\n }\n return hexlify(this._abiCoder.encode(functionFragment.outputs, values || []));\n }\n // Create the filter for the event with search criteria (e.g. for eth_filterLog)\n encodeFilterTopics(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\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 let topics = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n const encodeTopic = (param, value) => {\n if (param.type === \"string\") {\n return id(value);\n }\n else if (param.type === \"bytes\") {\n return keccak256(hexlify(value));\n }\n // Check addresses are valid\n if (param.type === \"address\") {\n this._abiCoder.encode([\"address\"], [value]);\n }\n return hexZeroPad(hexlify(value), 32);\n };\n values.forEach((value, index) => {\n let param = eventFragment.inputs[index];\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 if (value == null) {\n topics.push(null);\n }\n else if (param.baseType === \"array\" || param.baseType === \"tuple\") {\n logger.throwArgumentError(\"filtering with tuples or arrays not supported\", (\"contract.\" + param.name), value);\n }\n else if (Array.isArray(value)) {\n topics.push(value.map((value) => encodeTopic(param, value)));\n }\n else {\n topics.push(encodeTopic(param, value));\n }\n });\n // Trim off trailing nulls\n while (topics.length && topics[topics.length - 1] === null) {\n topics.pop();\n }\n return topics;\n }\n encodeEventLog(eventFragment, values) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\n }\n const topics = [];\n const dataTypes = [];\n const dataValues = [];\n if (!eventFragment.anonymous) {\n topics.push(this.getEventTopic(eventFragment));\n }\n if (values.length !== eventFragment.inputs.length) {\n logger.throwArgumentError(\"event arguments/values mismatch\", \"values\", values);\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 }\n else if (param.type === \"bytes\") {\n topics.push(keccak256(value));\n }\n else if (param.baseType === \"tuple\" || param.baseType === \"array\") {\n // @TOOD\n throw new Error(\"not implemented\");\n }\n else {\n topics.push(this._abiCoder.encode([param.type], [value]));\n }\n }\n else {\n dataTypes.push(param);\n dataValues.push(value);\n }\n });\n return {\n data: this._abiCoder.encode(dataTypes, dataValues),\n topics: topics\n };\n }\n // Decode a filter for the event and the search criteria\n decodeEventLog(eventFragment, data, topics) {\n if (typeof (eventFragment) === \"string\") {\n eventFragment = this.getEvent(eventFragment);\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 let indexed = [];\n let nonIndexed = [];\n let dynamic = [];\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 }\n else {\n indexed.push(param);\n dynamic.push(false);\n }\n }\n else {\n nonIndexed.push(param);\n dynamic.push(false);\n }\n });\n let resultIndexed = (topics != null) ? this._abiCoder.decode(indexed, concat(topics)) : null;\n let resultNonIndexed = this._abiCoder.decode(nonIndexed, data, true);\n let result = [];\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 }\n catch (error) {\n result[index] = error;\n }\n }\n }\n else {\n try {\n result[index] = resultNonIndexed[nonIndexedIndex++];\n }\n catch (error) {\n result[index] = error;\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 // Make error named values throw on access\n if (value instanceof Error) {\n Object.defineProperty(result, param.name, {\n enumerable: true,\n get: () => { throw wrapAccessError(`property ${JSON.stringify(param.name)}`, value); }\n });\n }\n else {\n result[param.name] = value;\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 enumerable: true,\n get: () => { throw wrapAccessError(`index ${i}`, value); }\n });\n }\n }\n return Object.freeze(result);\n }\n // Given a transaction, find the matching function fragment (if any) and\n // determine all its properties and call parameters\n parseTransaction(tx) {\n let fragment = this.getFunction(tx.data.substring(0, 10).toLowerCase());\n if (!fragment) {\n 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 // @TODO\n //parseCallResult(data: BytesLike): ??\n // Given an event log, find the matching event fragment (if any) and\n // determine all its properties and values\n parseLog(log) {\n let fragment = this.getEvent(log.topics[0]);\n if (!fragment || fragment.anonymous) {\n 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 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 parseError(data) {\n const hexData = hexlify(data);\n let fragment = this.getError(hexData.substring(0, 10).toLowerCase());\n if (!fragment) {\n 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 static from(value: Array | 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 static isInterface(value) {\n return !!(value && value._isInterface);\n }\n}\n//# sourceMappingURL=interface.js.map","export const version = \"abstract-provider/5.4.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { Description, defineReadOnly, resolveProperties } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n;\n;\n//export type CallTransactionable = {\n// call(transaction: TransactionRequest): Promise;\n//};\nexport class ForkEvent extends Description {\n static isForkEvent(value) {\n return !!(value && value._isForkEvent);\n }\n}\nexport class BlockForkEvent extends ForkEvent {\n constructor(blockHash, expiry) {\n if (!isHexString(blockHash, 32)) {\n logger.throwArgumentError(\"invalid blockHash\", \"blockHash\", blockHash);\n }\n super({\n _isForkEvent: true,\n _isBlockForkEvent: true,\n expiry: (expiry || 0),\n blockHash: blockHash\n });\n }\n}\nexport class TransactionForkEvent extends ForkEvent {\n constructor(hash, expiry) {\n if (!isHexString(hash, 32)) {\n logger.throwArgumentError(\"invalid transaction hash\", \"hash\", hash);\n }\n super({\n _isForkEvent: true,\n _isTransactionForkEvent: true,\n expiry: (expiry || 0),\n hash: hash\n });\n }\n}\nexport class TransactionOrderForkEvent extends ForkEvent {\n constructor(beforeHash, afterHash, expiry) {\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 super({\n _isForkEvent: true,\n _isTransactionOrderForkEvent: true,\n expiry: (expiry || 0),\n beforeHash: beforeHash,\n afterHash: afterHash\n });\n }\n}\n///////////////////////////////\n// Exported Abstracts\nexport class Provider {\n constructor() {\n logger.checkAbstract(new.target, Provider);\n defineReadOnly(this, \"_isProvider\", true);\n }\n getFeeData() {\n return __awaiter(this, void 0, void 0, function* () {\n const { block, gasPrice } = yield 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 let maxFeePerGas = null, maxPriorityFeePerGas = null;\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(\"2500000000\");\n maxFeePerGas = block.baseFeePerGas.mul(2).add(maxPriorityFeePerGas);\n }\n return { maxFeePerGas, maxPriorityFeePerGas, gasPrice };\n });\n }\n // Alias for \"on\"\n addListener(eventName, listener) {\n return this.on(eventName, listener);\n }\n // Alias for \"off\"\n removeListener(eventName, listener) {\n return this.off(eventName, listener);\n }\n static isProvider(value) {\n return !!(value && value._isProvider);\n }\n}\n//# sourceMappingURL=index.js.map","export const version = \"abstract-signer/5.4.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defineReadOnly, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst allowedTransactionKeys = [\n \"accessList\", \"chainId\", \"data\", \"from\", \"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"nonce\", \"to\", \"type\", \"value\"\n];\nconst forwardErrors = [\n Logger.errors.INSUFFICIENT_FUNDS,\n Logger.errors.NONCE_EXPIRED,\n Logger.errors.REPLACEMENT_UNDERPRICED,\n];\n;\n;\nexport class Signer {\n ///////////////////\n // Sub-classes MUST call super\n constructor() {\n logger.checkAbstract(new.target, Signer);\n defineReadOnly(this, \"_isSigner\", true);\n }\n ///////////////////\n // Sub-classes MAY override these\n getBalance(blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getBalance\");\n return yield this.provider.getBalance(this.getAddress(), blockTag);\n });\n }\n getTransactionCount(blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getTransactionCount\");\n return yield this.provider.getTransactionCount(this.getAddress(), blockTag);\n });\n }\n // Populates \"from\" if unspecified, and estimates the gas for the transation\n estimateGas(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"estimateGas\");\n const tx = yield resolveProperties(this.checkTransaction(transaction));\n return yield this.provider.estimateGas(tx);\n });\n }\n // Populates \"from\" if unspecified, and calls with the transation\n call(transaction, blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"call\");\n const tx = yield resolveProperties(this.checkTransaction(transaction));\n return yield 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) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"sendTransaction\");\n const tx = yield this.populateTransaction(transaction);\n const signedTx = yield this.signTransaction(tx);\n return yield this.provider.sendTransaction(signedTx);\n });\n }\n getChainId() {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getChainId\");\n const network = yield this.provider.getNetwork();\n return network.chainId;\n });\n }\n getGasPrice() {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getGasPrice\");\n return yield this.provider.getGasPrice();\n });\n }\n getFeeData() {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"getFeeData\");\n return yield this.provider.getFeeData();\n });\n }\n resolveName(name) {\n return __awaiter(this, void 0, void 0, function* () {\n this._checkProvider(\"resolveName\");\n return yield this.provider.resolveName(name);\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) {\n for (const key in transaction) {\n if (allowedTransactionKeys.indexOf(key) === -1) {\n logger.throwArgumentError(\"invalid transaction key: \" + key, \"transaction\", transaction);\n }\n }\n const tx = shallowCopy(transaction);\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 return tx;\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 populateTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n const tx = yield resolveProperties(this.checkTransaction(transaction));\n if (tx.to != null) {\n tx.to = Promise.resolve(tx.to).then((to) => __awaiter(this, void 0, void 0, function* () {\n if (to == null) {\n return null;\n }\n const address = yield 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 // Prevent this error from causing an UnhandledPromiseException\n tx.to.catch((error) => { });\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 }\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 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 // Populate missing gasPrice\n if (tx.gasPrice == null) {\n tx.gasPrice = this.getGasPrice();\n }\n }\n else {\n // We need to get fee data to determine things\n const feeData = yield this.getFeeData();\n if (tx.type == null) {\n // We need to auto-detect the intended type of this transaction...\n if (feeData.maxFeePerGas != null && feeData.maxPriorityFeePerGas != null) {\n // The network supports EIP-1559!\n // Upgrade transaction from null to eip-1559\n tx.type = 2;\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) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n else if (feeData.gasPrice != null) {\n // Network doesn't support EIP-1559...\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 // Populate missing fee data\n if (tx.gasPrice == null) {\n 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 // Populate missing fee data\n if (tx.maxFeePerGas == null) {\n tx.maxFeePerGas = feeData.maxFeePerGas;\n }\n if (tx.maxPriorityFeePerGas == null) {\n tx.maxPriorityFeePerGas = feeData.maxPriorityFeePerGas;\n }\n }\n }\n if (tx.nonce == null) {\n 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 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 if (tx.chainId == null) {\n tx.chainId = this.getChainId();\n }\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 return yield resolveProperties(tx);\n });\n }\n ///////////////////\n // Sub-classes SHOULD leave these alone\n _checkProvider(operation) {\n if (!this.provider) {\n logger.throwError(\"missing provider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: (operation || \"_checkProvider\")\n });\n }\n }\n static isSigner(value) {\n return !!(value && value._isSigner);\n }\n}\nexport class VoidSigner extends Signer {\n constructor(address, provider) {\n logger.checkNew(new.target, VoidSigner);\n super();\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"provider\", provider || null);\n }\n getAddress() {\n return Promise.resolve(this.address);\n }\n _fail(message, operation) {\n return Promise.resolve().then(() => {\n logger.throwError(message, Logger.errors.UNSUPPORTED_OPERATION, { operation: operation });\n });\n }\n signMessage(message) {\n return this._fail(\"VoidSigner cannot sign messages\", \"signMessage\");\n }\n signTransaction(transaction) {\n return this._fail(\"VoidSigner cannot sign transactions\", \"signTransaction\");\n }\n _signTypedData(domain, types, value) {\n return this._fail(\"VoidSigner cannot sign typed data\", \"signTypedData\");\n }\n connect(provider) {\n return new VoidSigner(this.address, provider);\n }\n}\n//# sourceMappingURL=index.js.map","export const version = \"signing-key/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { EC } from \"./elliptic\";\nimport { arrayify, hexlify, hexZeroPad, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nlet _curve = null;\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\nexport class SigningKey {\n constructor(privateKey) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n _addPoint(other) {\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 signDigest(digest) {\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 computeSharedSecret(otherKey) {\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 static isSigningKey(value) {\n return !!(value && value._isSigningKey);\n }\n}\nexport function recoverPublicKey(digest, signature) {\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}\nexport function computePublicKey(key, compressed) {\n const bytes = arrayify(key);\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) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n }\n else if (bytes.length === 65) {\n if (!compressed) {\n return hexlify(bytes);\n }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n//# sourceMappingURL=index.js.map","export const version = \"transactions/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, 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\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport var TransactionTypes;\n(function (TransactionTypes) {\n TransactionTypes[TransactionTypes[\"legacy\"] = 0] = \"legacy\";\n TransactionTypes[TransactionTypes[\"eip2930\"] = 1] = \"eip2930\";\n TransactionTypes[TransactionTypes[\"eip1559\"] = 2] = \"eip1559\";\n})(TransactionTypes || (TransactionTypes = {}));\n;\n///////////////////////////////\nfunction handleAddress(value) {\n if (value === \"0x\") {\n return null;\n }\n return getAddress(value);\n}\nfunction handleNumber(value) {\n if (value === \"0x\") {\n return Zero;\n }\n return BigNumber.from(value);\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];\nconst allowedTransactionKeys = {\n chainId: true, data: true, gasLimit: true, gasPrice: true, nonce: true, to: true, type: true, value: true\n};\nexport function computeAddress(key) {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\nexport function recoverAddress(digest, signature) {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\nfunction formatNumber(value, name) {\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}\nfunction accessSetify(addr, storageKeys) {\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}\nexport function accessListify(value) {\n if (Array.isArray(value)) {\n return 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 const result = Object.keys(value).map((addr) => {\n const storageKeys = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, {});\n return accessSetify(addr, Object.keys(storageKeys).sort());\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\nfunction formatAccessList(value) {\n return accessListify(value).map((set) => [set.address, set.storageKeys]);\n}\nfunction _serializeEip1559(transaction, signature) {\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 const fields = [\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 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 return hexConcat([\"0x02\", RLP.encode(fields)]);\n}\nfunction _serializeEip2930(transaction, signature) {\n const fields = [\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 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 return hexConcat([\"0x01\", RLP.encode(fields)]);\n}\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction, signature) {\n checkProperties(transaction, allowedTransactionKeys);\n const raw = [];\n transactionFields.forEach(function (fieldInfo) {\n let value = transaction[fieldInfo.name] || ([]);\n const options = {};\n if (fieldInfo.numeric) {\n options.hexPad = \"left\";\n }\n value = arrayify(hexlify(value, options));\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 // 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 raw.push(hexlify(value));\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 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 // 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 // Requesting an unsigned transation\n if (!signature) {\n return RLP.encode(raw);\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 // 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 // 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 }\n else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n return RLP.encode(raw);\n}\nexport function serialize(transaction, signature) {\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 // 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 return logger.throwError(`unsupported transaction type: ${transaction.type}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\nfunction _parseEipSignature(tx, fields, serialize) {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) {\n throw new Error(\"bad recid\");\n }\n tx.v = recid;\n }\n catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n }\n catch (error) {\n console.log(error);\n }\n}\nfunction _parseEip1559(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx = {\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 // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n return tx;\n}\nfunction _parseEip2930(payload) {\n const transaction = RLP.decode(payload.slice(1));\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n const tx = {\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 // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) {\n return tx;\n }\n tx.hash = keccak256(payload);\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n return tx;\n}\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction) {\n const transaction = RLP.decode(rawTransaction);\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n const tx = {\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 // Legacy unsigned transaction\n if (transaction.length === 6) {\n 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 tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\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 tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) {\n tx.chainId = 0;\n }\n let recoveryParam = tx.v - 27;\n const raw = transaction.slice(0, 6);\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 const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n }\n catch (error) {\n console.log(error);\n }\n tx.hash = keccak256(rawTransaction);\n }\n tx.type = null;\n return tx;\n}\nexport function parse(rawTransaction) {\n const payload = arrayify(rawTransaction);\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) {\n 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 return logger.throwError(`unsupported transaction type: ${payload[0]}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n//# sourceMappingURL=index.js.map","export const version = \"contracts/5.4.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { checkResultErrors, Indexed, Interface } from \"@ethersproject/abi\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { getAddress, getContractAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, concat, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\nimport { defineReadOnly, deepCopy, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n;\n;\n///////////////////////////////\nconst allowedTransactionKeys = {\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};\nfunction resolveName(resolver, nameOrPromise) {\n return __awaiter(this, void 0, void 0, function* () {\n const name = yield nameOrPromise;\n // If it is already an address, just use it (after adding checksum)\n try {\n return getAddress(name);\n }\n catch (error) { }\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 const address = yield resolver.resolveName(name);\n if (address == null) {\n logger.throwArgumentError(\"resolver or addr is not configured for ENS name\", \"name\", name);\n }\n return address;\n });\n}\n// Recursively replaces ENS names with promises to resolve the name and resolves all properties\nfunction resolveAddresses(resolver, value, paramType) {\n return __awaiter(this, void 0, void 0, function* () {\n if (Array.isArray(paramType)) {\n return yield Promise.all(paramType.map((paramType, index) => {\n return resolveAddresses(resolver, ((Array.isArray(value)) ? value[index] : value[paramType.name]), paramType);\n }));\n }\n if (paramType.type === \"address\") {\n return yield resolveName(resolver, value);\n }\n if (paramType.type === \"tuple\") {\n return yield resolveAddresses(resolver, value, paramType.components);\n }\n if (paramType.baseType === \"array\") {\n if (!Array.isArray(value)) {\n return Promise.reject(new Error(\"invalid value for array\"));\n }\n return yield Promise.all(value.map((v) => resolveAddresses(resolver, v, paramType.arrayChildren)));\n }\n return value;\n });\n}\nfunction populateTransaction(contract, fragment, args) {\n return __awaiter(this, void 0, void 0, function* () {\n // If an extra argument is given, it is overrides\n let overrides = {};\n if (args.length === fragment.inputs.length + 1 && typeof (args[args.length - 1]) === \"object\") {\n overrides = shallowCopy(args.pop());\n }\n // Make sure the parameter count matches\n logger.checkArgumentCount(args.length, fragment.inputs.length, \"passed to contract\");\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((check) => __awaiter(this, void 0, void 0, function* () {\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 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 //} else {\n // Contracts without a signer can override \"from\", and if\n // unspecified the zero address is used\n //overrides.from = AddressZero;\n }\n // Wait for all dependencies to be resolved (prefer the signer over the provider)\n const resolved = yield resolveProperties({\n args: resolveAddresses(contract.signer || contract.provider, args, fragment.inputs),\n address: contract.resolvedAddress,\n overrides: (resolveProperties(overrides) || {})\n });\n // The ABI coded transaction\n const data = contract.interface.encodeFunctionData(fragment, resolved.args);\n const tx = {\n data: data,\n to: resolved.address\n };\n // Resolved Overrides\n const ro = resolved.overrides;\n // Populate simple overrides\n if (ro.nonce != null) {\n tx.nonce = BigNumber.from(ro.nonce).toNumber();\n }\n if (ro.gasLimit != null) {\n tx.gasLimit = BigNumber.from(ro.gasLimit);\n }\n if (ro.gasPrice != null) {\n tx.gasPrice = BigNumber.from(ro.gasPrice);\n }\n if (ro.maxFeePerGas != null) {\n tx.maxFeePerGas = BigNumber.from(ro.maxFeePerGas);\n }\n if (ro.maxPriorityFeePerGas != null) {\n tx.maxPriorityFeePerGas = BigNumber.from(ro.maxPriorityFeePerGas);\n }\n if (ro.from != null) {\n tx.from = ro.from;\n }\n if (ro.type != null) {\n tx.type = ro.type;\n }\n if (ro.accessList != null) {\n 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]) {\n intrinsic += 64;\n }\n }\n tx.gasLimit = BigNumber.from(fragment.gas).add(intrinsic);\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 // Remvoe the overrides\n delete overrides.nonce;\n delete overrides.gasLimit;\n delete overrides.gasPrice;\n delete overrides.from;\n delete overrides.value;\n delete overrides.type;\n delete overrides.accessList;\n delete overrides.maxFeePerGas;\n delete overrides.maxPriorityFeePerGas;\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) => (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 return tx;\n });\n}\nfunction buildPopulate(contract, fragment) {\n return function (...args) {\n return populateTransaction(contract, fragment, args);\n };\n}\nfunction buildEstimate(contract, fragment) {\n const signerOrProvider = (contract.signer || contract.provider);\n return function (...args) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!signerOrProvider) {\n logger.throwError(\"estimate require a provider or signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"estimateGas\"\n });\n }\n const tx = yield populateTransaction(contract, fragment, args);\n return yield signerOrProvider.estimateGas(tx);\n });\n };\n}\nfunction buildCall(contract, fragment, collapseSimple) {\n const signerOrProvider = (contract.signer || contract.provider);\n return function (...args) {\n return __awaiter(this, void 0, void 0, function* () {\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 = yield overrides.blockTag;\n }\n delete overrides.blockTag;\n args.push(overrides);\n }\n // If the contract was just deployed, wait until it is mined\n if (contract.deployTransaction != null) {\n yield contract._deployed(blockTag);\n }\n // Call a node and get the result\n const tx = yield populateTransaction(contract, fragment, args);\n const result = yield signerOrProvider.call(tx, blockTag);\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, fragment) {\n return function (...args) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!contract.signer) {\n logger.throwError(\"sending a transaction requires a signer\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"sendTransaction\"\n });\n }\n // If the contract was just deployed, wait until it is minded\n if (contract.deployTransaction != null) {\n yield contract._deployed();\n }\n const txRequest = yield populateTransaction(contract, fragment, args);\n const tx = yield contract.signer.sendTransaction(txRequest);\n // Tweak the tw.wait so the receipt has extra properties\n const wait = tx.wait.bind(tx);\n tx.wait = (confirmations) => {\n return wait(confirmations).then((receipt) => {\n receipt.events = receipt.logs.map((log) => {\n let event = deepCopy(log);\n let parsed = null;\n try {\n parsed = contract.interface.parseLog(log);\n }\n catch (e) { }\n // Successfully parsed the event log; include it\n if (parsed) {\n event.args = parsed.args;\n event.decode = (data, topics) => {\n return contract.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\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 return event;\n });\n return receipt;\n });\n };\n return tx;\n });\n };\n}\nfunction buildDefault(contract, fragment, collapseSimple) {\n if (fragment.constant) {\n return buildCall(contract, fragment, collapseSimple);\n }\n return buildSend(contract, fragment);\n}\nfunction getEventTag(filter) {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return \"*\";\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}\nclass RunningEvent {\n constructor(tag, filter) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"filter\", filter);\n this._listeners = [];\n }\n addListener(listener, once) {\n this._listeners.push({ listener: listener, once: once });\n }\n removeListener(listener) {\n let done = false;\n this._listeners = this._listeners.filter((item) => {\n if (done || item.listener !== listener) {\n return true;\n }\n done = true;\n return false;\n });\n }\n removeAllListeners() {\n this._listeners = [];\n }\n listeners() {\n return this._listeners.map((i) => i.listener);\n }\n listenerCount() {\n return this._listeners.length;\n }\n run(args) {\n const listenerCount = this.listenerCount();\n this._listeners = this._listeners.filter((item) => {\n const argsCopy = args.slice();\n // Call the callback in the next event loop\n setTimeout(() => {\n item.listener.apply(this, argsCopy);\n }, 0);\n // Reschedule it if it not \"once\"\n return !(item.once);\n });\n return listenerCount;\n }\n prepareEvent(event) {\n }\n // Returns the array that will be applied to an emit\n getEmit(event) {\n return [event];\n }\n}\nclass ErrorRunningEvent extends RunningEvent {\n constructor() {\n super(\"error\", null);\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// A Fragment Event will populate all the properties that Wildcard\n// will, and additioanlly dereference the arguments when emitting\nclass FragmentRunningEvent extends RunningEvent {\n constructor(address, contractInterface, fragment, topics) {\n const filter = {\n address: address\n };\n let topic = contractInterface.getEventTopic(fragment);\n if (topics) {\n if (topic !== topics[0]) {\n logger.throwArgumentError(\"topic mismatch\", \"topics\", topics);\n }\n filter.topics = topics.slice();\n }\n else {\n filter.topics = [topic];\n }\n super(getEventTag(filter), filter);\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n defineReadOnly(this, \"fragment\", fragment);\n }\n prepareEvent(event) {\n super.prepareEvent(event);\n event.event = this.fragment.name;\n event.eventSignature = this.fragment.format();\n event.decode = (data, topics) => {\n return this.interface.decodeEventLog(this.fragment, data, topics);\n };\n try {\n event.args = this.interface.decodeEventLog(this.fragment, event.data, event.topics);\n }\n catch (error) {\n event.args = null;\n event.decodeError = error;\n }\n }\n getEmit(event) {\n const errors = checkResultErrors(event.args);\n if (errors.length) {\n throw errors[0].error;\n }\n const args = (event.args || []).slice();\n args.push(event);\n return args;\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 constructor(address, contractInterface) {\n super(\"*\", { address: address });\n defineReadOnly(this, \"address\", address);\n defineReadOnly(this, \"interface\", contractInterface);\n }\n prepareEvent(event) {\n super.prepareEvent(event);\n try {\n const parsed = this.interface.parseLog(event);\n event.event = parsed.name;\n event.eventSignature = parsed.signature;\n event.decode = (data, topics) => {\n return this.interface.decodeEventLog(parsed.eventFragment, data, topics);\n };\n event.args = parsed.args;\n }\n catch (error) {\n // No matching event\n }\n }\n}\nexport class BaseContract {\n constructor(addressOrName, contractInterface, signerOrProvider) {\n logger.checkNew(new.target, Contract);\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n defineReadOnly(this, \"interface\", getStatic((new.target), \"getInterface\")(contractInterface));\n if (signerOrProvider == null) {\n defineReadOnly(this, \"provider\", null);\n defineReadOnly(this, \"signer\", null);\n }\n else if (Signer.isSigner(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider.provider || null);\n defineReadOnly(this, \"signer\", signerOrProvider);\n }\n else if (Provider.isProvider(signerOrProvider)) {\n defineReadOnly(this, \"provider\", signerOrProvider);\n defineReadOnly(this, \"signer\", null);\n }\n else {\n logger.throwArgumentError(\"invalid signer or provider\", \"signerOrProvider\", signerOrProvider);\n }\n defineReadOnly(this, \"callStatic\", {});\n defineReadOnly(this, \"estimateGas\", {});\n defineReadOnly(this, \"functions\", {});\n defineReadOnly(this, \"populateTransaction\", {});\n defineReadOnly(this, \"filters\", {});\n {\n const uniqueFilters = {};\n Object.keys(this.interface.events).forEach((eventSignature) => {\n const event = this.interface.events[eventSignature];\n defineReadOnly(this.filters, eventSignature, (...args) => {\n return {\n address: this.address,\n topics: this.interface.encodeFilterTopics(event, args)\n };\n });\n if (!uniqueFilters[event.name]) {\n uniqueFilters[event.name] = [];\n }\n uniqueFilters[event.name].push(eventSignature);\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 }\n else {\n logger.warn(`Duplicate definition of ${name} (${filters.join(\", \")})`);\n }\n });\n }\n defineReadOnly(this, \"_runningEvents\", {});\n defineReadOnly(this, \"_wrappedEmits\", {});\n if (addressOrName == null) {\n logger.throwArgumentError(\"invalid contract address or ENS name\", \"addressOrName\", addressOrName);\n }\n defineReadOnly(this, \"address\", addressOrName);\n if (this.provider) {\n defineReadOnly(this, \"resolvedAddress\", resolveName(this.provider, addressOrName));\n }\n else {\n try {\n defineReadOnly(this, \"resolvedAddress\", Promise.resolve(getAddress(addressOrName)));\n }\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 const uniqueNames = {};\n const uniqueSignatures = {};\n Object.keys(this.interface.functions).forEach((signature) => {\n const fragment = this.interface.functions[signature];\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 // Track unique names; we only expose bare named functions if they\n // are ambiguous\n {\n const name = fragment.name;\n if (!uniqueNames[name]) {\n uniqueNames[name] = [];\n }\n uniqueNames[name].push(signature);\n }\n if (this[signature] == null) {\n defineReadOnly(this, signature, buildDefault(this, fragment, true));\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 if (this.callStatic[signature] == null) {\n defineReadOnly(this.callStatic, signature, buildCall(this, fragment, true));\n }\n if (this.populateTransaction[signature] == null) {\n defineReadOnly(this.populateTransaction, signature, buildPopulate(this, fragment));\n }\n if (this.estimateGas[signature] == null) {\n defineReadOnly(this.estimateGas, signature, buildEstimate(this, fragment));\n }\n });\n Object.keys(uniqueNames).forEach((name) => {\n // Ambiguous names to not get attached as bare names\n const signatures = uniqueNames[name];\n if (signatures.length > 1) {\n return;\n }\n const signature = signatures[0];\n // If overwriting a member property that is null, swallow the error\n try {\n if (this[name] == null) {\n defineReadOnly(this, name, this[signature]);\n }\n }\n catch (e) { }\n if (this.functions[name] == null) {\n defineReadOnly(this.functions, name, this.functions[signature]);\n }\n if (this.callStatic[name] == null) {\n defineReadOnly(this.callStatic, name, this.callStatic[signature]);\n }\n if (this.populateTransaction[name] == null) {\n defineReadOnly(this.populateTransaction, name, this.populateTransaction[signature]);\n }\n if (this.estimateGas[name] == null) {\n defineReadOnly(this.estimateGas, name, this.estimateGas[signature]);\n }\n });\n }\n static getContractAddress(transaction) {\n return getContractAddress(transaction);\n }\n static getInterface(contractInterface) {\n if (Interface.isInterface(contractInterface)) {\n return contractInterface;\n }\n return new Interface(contractInterface);\n }\n // @TODO: Allow timeout?\n deployed() {\n return this._deployed();\n }\n _deployed(blockTag) {\n if (!this._deployedPromise) {\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 // 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 return this._deployedPromise;\n }\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n fallback(overrides) {\n if (!this.signer) {\n logger.throwError(\"sending a transactions require a signer\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"sendTransaction(fallback)\" });\n }\n const tx = shallowCopy(overrides || {});\n [\"from\", \"to\"].forEach(function (key) {\n if (tx[key] == null) {\n return;\n }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n tx.to = this.resolvedAddress;\n return this.deployed().then(() => {\n return this.signer.sendTransaction(tx);\n });\n }\n // Reconnect to a different signer or provider\n connect(signerOrProvider) {\n if (typeof (signerOrProvider) === \"string\") {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n const contract = new (this.constructor)(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n defineReadOnly(contract, \"deployTransaction\", this.deployTransaction);\n }\n return contract;\n }\n // Re-attach to a different on-chain instance of this contract\n attach(addressOrName) {\n return new (this.constructor)(addressOrName, this.interface, this.signer || this.provider);\n }\n static isIndexed(value) {\n return Indexed.isIndexed(value);\n }\n _normalizeRunningEvent(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 _getRunningEvent(eventName) {\n if (typeof (eventName) === \"string\") {\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 // Listen for any event that is registered\n if (eventName === \"event\") {\n return this._normalizeRunningEvent(new RunningEvent(\"event\", null));\n }\n // Listen for any event\n if (eventName === \"*\") {\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\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 // We have topics to filter by...\n if (eventName.topics && eventName.topics.length > 0) {\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 }\n catch (error) { }\n // Filter by the unknown topichash\n const filter = {\n address: this.address,\n topics: eventName.topics\n };\n return this._normalizeRunningEvent(new RunningEvent(getEventTag(filter), filter));\n }\n return this._normalizeRunningEvent(new WildcardRunningEvent(this.address, this.interface));\n }\n _checkRunningEvents(runningEvent) {\n if (runningEvent.listenerCount() === 0) {\n delete this._runningEvents[runningEvent.tag];\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 // Subclasses can override this to gracefully recover\n // from parse errors if they wish\n _wrapEvent(runningEvent, log, listener) {\n const event = deepCopy(log);\n event.removeListener = () => {\n if (!listener) {\n return;\n }\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\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 // This may throw if the topics and data mismatch the signature\n runningEvent.prepareEvent(event);\n return event;\n }\n _addEventListener(runningEvent, listener, once) {\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 runningEvent.addListener(listener, once);\n // Track this running event and its listeners (may already be there; but no hard in updating)\n this._runningEvents[runningEvent.tag] = runningEvent;\n // If we are not polling the provider, start polling\n if (!this._wrappedEmits[runningEvent.tag]) {\n const wrappedEmit = (log) => {\n let event = this._wrapEvent(runningEvent, log, listener);\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 }\n catch (error) {\n event.decodeError = error.error;\n }\n }\n // Always emit \"event\" for fragment-base events\n if (runningEvent.filter != null) {\n this.emit(\"event\", event);\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 // 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 queryFilter(event, fromBlockOrBlockhash, toBlock) {\n const runningEvent = this._getRunningEvent(event);\n const filter = shallowCopy(runningEvent.filter);\n if (typeof (fromBlockOrBlockhash) === \"string\" && isHexString(fromBlockOrBlockhash, 32)) {\n if (toBlock != null) {\n logger.throwArgumentError(\"cannot specify toBlock with blockhash\", \"toBlock\", toBlock);\n }\n filter.blockHash = fromBlockOrBlockhash;\n }\n else {\n filter.fromBlock = ((fromBlockOrBlockhash != null) ? fromBlockOrBlockhash : 0);\n filter.toBlock = ((toBlock != null) ? toBlock : \"latest\");\n }\n return this.provider.getLogs(filter).then((logs) => {\n return logs.map((log) => this._wrapEvent(runningEvent, log, null));\n });\n }\n on(event, listener) {\n this._addEventListener(this._getRunningEvent(event), listener, false);\n return this;\n }\n once(event, listener) {\n this._addEventListener(this._getRunningEvent(event), listener, true);\n return this;\n }\n emit(eventName, ...args) {\n if (!this.provider) {\n return false;\n }\n const runningEvent = this._getRunningEvent(eventName);\n const result = (runningEvent.run(args) > 0);\n // May have drained all the \"once\" events; check for living events\n this._checkRunningEvents(runningEvent);\n return result;\n }\n listenerCount(eventName) {\n if (!this.provider) {\n return 0;\n }\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 listeners(eventName) {\n if (!this.provider) {\n return [];\n }\n if (eventName == null) {\n const result = [];\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 return this._getRunningEvent(eventName).listeners();\n }\n removeAllListeners(eventName) {\n if (!this.provider) {\n 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 // Delete any listeners\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeAllListeners();\n this._checkRunningEvents(runningEvent);\n return this;\n }\n off(eventName, listener) {\n if (!this.provider) {\n return this;\n }\n const runningEvent = this._getRunningEvent(eventName);\n runningEvent.removeListener(listener);\n this._checkRunningEvents(runningEvent);\n return this;\n }\n removeListener(eventName, listener) {\n return this.off(eventName, listener);\n }\n}\nexport class Contract extends BaseContract {\n}\nexport class ContractFactory {\n constructor(contractInterface, bytecode, signer) {\n let bytecodeHex = null;\n if (typeof (bytecode) === \"string\") {\n bytecodeHex = bytecode;\n }\n else if (isBytes(bytecode)) {\n bytecodeHex = hexlify(bytecode);\n }\n else if (bytecode && typeof (bytecode.object) === \"string\") {\n // Allow the bytecode object from the Solidity compiler\n bytecodeHex = bytecode.object;\n }\n else {\n // Crash in the next verification step\n bytecodeHex = \"!\";\n }\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== \"0x\") {\n 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 // 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 defineReadOnly(this, \"bytecode\", bytecodeHex);\n defineReadOnly(this, \"interface\", getStatic((new.target), \"getInterface\")(contractInterface));\n defineReadOnly(this, \"signer\", signer || null);\n }\n // @TODO: Future; rename to populteTransaction?\n getDeployTransaction(...args) {\n let tx = {};\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 // Do not allow these to be overridden in a deployment transaction\n [\"data\", \"from\", \"to\"].forEach((key) => {\n if (tx[key] == null) {\n return;\n }\n logger.throwError(\"cannot override \" + key, Logger.errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n if (tx.value) {\n const value = BigNumber.from(tx.value);\n if (!value.isZero() && !this.interface.deploy.payable) {\n logger.throwError(\"non-payable constructor cannot override value\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"overrides.value\",\n value: tx.value\n });\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 // 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 return tx;\n }\n deploy(...args) {\n return __awaiter(this, void 0, void 0, function* () {\n let overrides = {};\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 // Make sure the call matches the constructor signature\n logger.checkArgumentCount(args.length, this.interface.deploy.inputs.length, \" in Contract constructor\");\n // Resolve ENS names and promises in the arguments\n const params = yield resolveAddresses(this.signer, args, this.interface.deploy.inputs);\n params.push(overrides);\n // Get the deployment transaction (with optional overrides)\n const unsignedTx = this.getDeployTransaction(...params);\n // Send the deployment transaction\n const tx = yield this.signer.sendTransaction(unsignedTx);\n const address = getStatic(this.constructor, \"getContractAddress\")(tx);\n const contract = getStatic(this.constructor, \"getContract\")(address, this.interface, this.signer);\n defineReadOnly(contract, \"deployTransaction\", tx);\n return contract;\n });\n }\n attach(address) {\n return (this.constructor).getContract(address, this.interface, this.signer);\n }\n connect(signer) {\n return new (this.constructor)(this.interface, this.bytecode, signer);\n }\n static fromSolidity(compilerOutput, signer) {\n if (compilerOutput == null) {\n logger.throwError(\"missing compiler output\", Logger.errors.MISSING_ARGUMENT, { argument: \"compilerOutput\" });\n }\n if (typeof (compilerOutput) === \"string\") {\n compilerOutput = JSON.parse(compilerOutput);\n }\n const abi = compilerOutput.abi;\n let bytecode = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n }\n else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n return new this(abi, bytecode, signer);\n }\n static getInterface(contractInterface) {\n return Contract.getInterface(contractInterface);\n }\n static getContractAddress(tx) {\n return getContractAddress(tx);\n }\n static getContract(address, contractInterface, signer) {\n return new Contract(address, contractInterface, signer);\n }\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport { arrayify, hexZeroPad, isBytes } from \"@ethersproject/bytes\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BigNumber, isBigNumberish } from \"./bignumber\";\nconst _constructorGuard = {};\nconst Zero = BigNumber.from(0);\nconst NegativeOne = BigNumber.from(-1);\nfunction throwFault(message, fault, operation, value) {\n const params = { fault: fault, operation: operation };\n if (value !== undefined) {\n params.value = value;\n }\n return logger.throwError(message, Logger.errors.NUMERIC_FAULT, params);\n}\n// Constant to pull zeros from for multipliers\nlet zeros = \"0\";\nwhile (zeros.length < 256) {\n zeros += zeros;\n}\n// Returns a string \"1\" followed by decimal \"0\"s\nfunction getMultiplier(decimals) {\n if (typeof (decimals) !== \"number\") {\n try {\n decimals = BigNumber.from(decimals).toNumber();\n }\n catch (e) { }\n }\n if (typeof (decimals) === \"number\" && decimals >= 0 && decimals <= 256 && !(decimals % 1)) {\n return (\"1\" + zeros.substring(0, decimals));\n }\n return logger.throwArgumentError(\"invalid decimal size\", \"decimals\", decimals);\n}\nexport function formatFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n // Make sure wei is a big number (convert as necessary)\n value = BigNumber.from(value);\n const negative = value.lt(Zero);\n if (negative) {\n value = value.mul(NegativeOne);\n }\n let fraction = value.mod(multiplier).toString();\n while (fraction.length < multiplier.length - 1) {\n fraction = \"0\" + fraction;\n }\n // Strip training 0\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n const whole = value.div(multiplier).toString();\n if (multiplier.length === 1) {\n value = whole;\n }\n else {\n value = whole + \".\" + fraction;\n }\n if (negative) {\n value = \"-\" + value;\n }\n return value;\n}\nexport function parseFixed(value, decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n const multiplier = getMultiplier(decimals);\n if (typeof (value) !== \"string\" || !value.match(/^-?[0-9.,]+$/)) {\n logger.throwArgumentError(\"invalid decimal value\", \"value\", value);\n }\n // Is it negative?\n const negative = (value.substring(0, 1) === \"-\");\n if (negative) {\n value = value.substring(1);\n }\n if (value === \".\") {\n logger.throwArgumentError(\"missing value\", \"value\", value);\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 let whole = comps[0], fraction = comps[1];\n if (!whole) {\n whole = \"0\";\n }\n if (!fraction) {\n 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 // Fully pad the string with zeros to get to wei\n while (fraction.length < multiplier.length - 1) {\n fraction += \"0\";\n }\n const wholeValue = BigNumber.from(whole);\n const fractionValue = BigNumber.from(fraction);\n let wei = (wholeValue.mul(multiplier)).add(fractionValue);\n if (negative) {\n wei = wei.mul(NegativeOne);\n }\n return wei;\n}\nexport class FixedFormat {\n constructor(constructorGuard, signed, width, decimals) {\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 this.signed = signed;\n this.width = width;\n this.decimals = decimals;\n this.name = (signed ? \"\" : \"u\") + \"fixed\" + String(width) + \"x\" + String(decimals);\n this._multiplier = getMultiplier(decimals);\n Object.freeze(this);\n }\n static from(value) {\n if (value instanceof FixedFormat) {\n return value;\n }\n if (typeof (value) === \"number\") {\n value = `fixed128x${value}`;\n }\n let signed = true;\n let width = 128;\n let decimals = 18;\n if (typeof (value) === \"string\") {\n if (value === \"fixed\") {\n // defaults...\n }\n else if (value === \"ufixed\") {\n signed = false;\n }\n else {\n const match = value.match(/^(u?)fixed([0-9]+)x([0-9]+)$/);\n if (!match) {\n logger.throwArgumentError(\"invalid fixed format\", \"format\", value);\n }\n signed = (match[1] !== \"u\");\n width = parseInt(match[2]);\n decimals = parseInt(match[3]);\n }\n }\n else if (value) {\n const check = (key, type, defaultValue) => {\n if (value[key] == null) {\n return defaultValue;\n }\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 if (width % 8) {\n logger.throwArgumentError(\"invalid fixed format width (not byte aligned)\", \"format.width\", width);\n }\n if (decimals > 80) {\n logger.throwArgumentError(\"invalid fixed format (decimals too large)\", \"format.decimals\", decimals);\n }\n return new FixedFormat(_constructorGuard, signed, width, decimals);\n }\n}\nexport class FixedNumber {\n constructor(constructorGuard, hex, value, format) {\n logger.checkNew(new.target, FixedNumber);\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 this.format = format;\n this._hex = hex;\n this._value = value;\n this._isFixedNumber = true;\n Object.freeze(this);\n }\n _checkFormat(other) {\n if (this.format.name !== other.format.name) {\n logger.throwArgumentError(\"incompatible format; use fixedNumber.toFormat\", \"other\", other);\n }\n }\n addUnsafe(other) {\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 subUnsafe(other) {\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 mulUnsafe(other) {\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 divUnsafe(other) {\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 floor() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (this.isNegative() && hasFraction) {\n result = result.subUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n ceiling() {\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n let result = FixedNumber.from(comps[0], this.format);\n const hasFraction = !comps[1].match(/^(0*)$/);\n if (!this.isNegative() && hasFraction) {\n result = result.addUnsafe(ONE.toFormat(result.format));\n }\n return result;\n }\n // @TODO: Support other rounding algorithms\n round(decimals) {\n if (decimals == null) {\n decimals = 0;\n }\n // If we are already in range, we're done\n const comps = this.toString().split(\".\");\n if (comps.length === 1) {\n comps.push(\"0\");\n }\n if (decimals < 0 || decimals > 80 || (decimals % 1)) {\n logger.throwArgumentError(\"invalid decimal count\", \"decimals\", decimals);\n }\n if (comps[1].length <= decimals) {\n return this;\n }\n const factor = FixedNumber.from(\"1\" + zeros.substring(0, decimals), this.format);\n const bump = BUMP.toFormat(this.format);\n return this.mulUnsafe(factor).addUnsafe(bump).floor().divUnsafe(factor);\n }\n isZero() {\n return (this._value === \"0.0\" || this._value === \"0\");\n }\n isNegative() {\n return (this._value[0] === \"-\");\n }\n toString() { return this._value; }\n toHexString(width) {\n if (width == null) {\n return this._hex;\n }\n if (width % 8) {\n logger.throwArgumentError(\"invalid byte width\", \"width\", width);\n }\n const hex = BigNumber.from(this._hex).fromTwos(this.format.width).toTwos(width).toHexString();\n return hexZeroPad(hex, width / 8);\n }\n toUnsafeFloat() { return parseFloat(this.toString()); }\n toFormat(format) {\n return FixedNumber.fromString(this._value, format);\n }\n static fromValue(value, decimals, format) {\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 if (decimals == null) {\n decimals = 0;\n }\n if (format == null) {\n format = \"fixed\";\n }\n return FixedNumber.fromString(formatFixed(value, decimals), FixedFormat.from(format));\n }\n static fromString(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n const numeric = parseFixed(value, fixedFormat.decimals);\n if (!fixedFormat.signed && numeric.lt(Zero)) {\n throwFault(\"unsigned value cannot be negative\", \"overflow\", \"value\", value);\n }\n let hex = null;\n if (fixedFormat.signed) {\n hex = numeric.toTwos(fixedFormat.width).toHexString();\n }\n else {\n hex = numeric.toHexString();\n hex = hexZeroPad(hex, fixedFormat.width / 8);\n }\n const decimal = formatFixed(numeric, fixedFormat.decimals);\n return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static fromBytes(value, format) {\n if (format == null) {\n format = \"fixed\";\n }\n const fixedFormat = FixedFormat.from(format);\n if (arrayify(value).length > fixedFormat.width / 8) {\n throw new Error(\"overflow\");\n }\n let numeric = BigNumber.from(value);\n if (fixedFormat.signed) {\n 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 return new FixedNumber(_constructorGuard, hex, decimal, fixedFormat);\n }\n static from(value, format) {\n if (typeof (value) === \"string\") {\n return FixedNumber.fromString(value, format);\n }\n if (isBytes(value)) {\n return FixedNumber.fromBytes(value, format);\n }\n try {\n return FixedNumber.fromValue(value, 0, format);\n }\n catch (error) {\n // Allow NUMERIC_FAULT to bubble up\n if (error.code !== Logger.errors.INVALID_ARGUMENT) {\n throw error;\n }\n }\n return logger.throwArgumentError(\"invalid FixedNumber value\", \"value\", value);\n }\n static isFixedNumber(value) {\n return !!(value && value._isFixedNumber);\n }\n}\nconst ONE = FixedNumber.from(1);\nconst BUMP = FixedNumber.from(\"0.5\");\n//# sourceMappingURL=fixednumber.js.map","import { concat } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nexport const messagePrefix = \"\\x19Ethereum Signed Message:\\n\";\nexport function hashMessage(message) {\n if (typeof (message) === \"string\") {\n message = toUtf8Bytes(message);\n }\n return keccak256(concat([\n toUtf8Bytes(messagePrefix),\n toUtf8Bytes(String(message.length)),\n message\n ]));\n}\n//# sourceMappingURL=message.js.map","export const version = \"hash/5.4.0\";\n//# sourceMappingURL=_version.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { arrayify, hexConcat, hexlify, hexZeroPad, isHexString } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { id } from \"./id\";\nconst padding = new Uint8Array(32);\npadding.fill(0);\nconst NegativeOne = BigNumber.from(-1);\nconst Zero = BigNumber.from(0);\nconst One = BigNumber.from(1);\nconst MaxUint256 = BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\nfunction hexPadRight(value) {\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}\nconst hexTrue = hexZeroPad(One.toHexString(), 32);\nconst hexFalse = hexZeroPad(Zero.toHexString(), 32);\nconst domainFieldTypes = {\n name: \"string\",\n version: \"string\",\n chainId: \"uint256\",\n verifyingContract: \"address\",\n salt: \"bytes32\"\n};\nconst domainFieldNames = [\n \"name\", \"version\", \"chainId\", \"verifyingContract\", \"salt\"\n];\nfunction checkString(key) {\n return function (value) {\n if (typeof (value) !== \"string\") {\n logger.throwArgumentError(`invalid domain value for ${JSON.stringify(key)}`, `domain.${key}`, value);\n }\n return value;\n };\n}\nconst domainChecks = {\n name: checkString(\"name\"),\n version: checkString(\"version\"),\n chainId: function (value) {\n try {\n return BigNumber.from(value).toString();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value for \"chainId\"`, \"domain.chainId\", value);\n },\n verifyingContract: function (value) {\n try {\n return getAddress(value).toLowerCase();\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"verifyingContract\"`, \"domain.verifyingContract\", value);\n },\n salt: function (value) {\n try {\n const bytes = arrayify(value);\n if (bytes.length !== 32) {\n throw new Error(\"bad length\");\n }\n return hexlify(bytes);\n }\n catch (error) { }\n return logger.throwArgumentError(`invalid domain value \"salt\"`, \"domain.salt\", value);\n }\n};\nfunction getBaseEncoder(type) {\n // intXX and uintXX\n {\n const match = type.match(/^(u?)int(\\d*)$/);\n if (match) {\n const signed = (match[1] === \"\");\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 const boundsUpper = MaxUint256.mask(signed ? (width - 1) : width);\n const boundsLower = signed ? boundsUpper.add(One).mul(NegativeOne) : Zero;\n return function (value) {\n const v = BigNumber.from(value);\n if (v.lt(boundsLower) || v.gt(boundsUpper)) {\n logger.throwArgumentError(`value out-of-bounds for ${type}`, \"value\", value);\n }\n return hexZeroPad(v.toTwos(256).toHexString(), 32);\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 return function (value) {\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 switch (type) {\n case \"address\": return function (value) {\n return hexZeroPad(getAddress(value), 32);\n };\n case \"bool\": return function (value) {\n return ((!value) ? hexFalse : hexTrue);\n };\n case \"bytes\": return function (value) {\n return keccak256(value);\n };\n case \"string\": return function (value) {\n return id(value);\n };\n }\n return null;\n}\nfunction encodeType(name, fields) {\n return `${name}(${fields.map(({ name, type }) => (type + \" \" + name)).join(\",\")})`;\n}\nexport class TypedDataEncoder {\n constructor(types) {\n defineReadOnly(this, \"types\", Object.freeze(deepCopy(types)));\n defineReadOnly(this, \"_encoderCache\", {});\n defineReadOnly(this, \"_types\", {});\n // Link struct types to their direct child structs\n const links = {};\n // Link structs to structs which contain them as a child\n const parents = {};\n // Link all subtypes within a given struct\n const subtypes = {};\n Object.keys(types).forEach((type) => {\n links[type] = {};\n parents[type] = [];\n subtypes[type] = {};\n });\n for (const name in types) {\n const uniqueNames = {};\n types[name].forEach((field) => {\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 // 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 // Is this a base encoding type?\n const encoder = getBaseEncoder(baseType);\n if (encoder) {\n return;\n }\n if (!parents[baseType]) {\n logger.throwArgumentError(`unknown type ${JSON.stringify(baseType)}`, \"types\", types);\n }\n // Add linkage\n parents[baseType].push(name);\n links[name][baseType] = true;\n });\n }\n // Deduce the primary type\n const primaryTypes = Object.keys(parents).filter((n) => (parents[n].length === 0));\n if (primaryTypes.length === 0) {\n logger.throwArgumentError(\"missing primary type\", \"types\", types);\n }\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 defineReadOnly(this, \"primaryType\", primaryTypes[0]);\n // Check for circular type references\n function checkCircular(type, found) {\n if (found[type]) {\n logger.throwArgumentError(`circular type reference to ${JSON.stringify(type)}`, \"types\", types);\n }\n found[type] = true;\n Object.keys(links[type]).forEach((child) => {\n if (!parents[child]) {\n return;\n }\n // Recursively check children\n checkCircular(child, found);\n // Mark all ancestors as having this decendant\n Object.keys(found).forEach((subtype) => {\n subtypes[subtype][child] = true;\n });\n });\n delete found[type];\n }\n checkCircular(this.primaryType, {});\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 getEncoder(type) {\n let encoder = this._encoderCache[type];\n if (!encoder) {\n encoder = this._encoderCache[type] = this._getEncoder(type);\n }\n return encoder;\n }\n _getEncoder(type) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => {\n if (length >= 0 && value.length !== length) {\n logger.throwArgumentError(\"array length mismatch; expected length ${ arrayLength }\", \"value\", value);\n }\n let result = value.map(subEncoder);\n if (this._types[subtype]) {\n result = result.map(keccak256);\n }\n return keccak256(hexConcat(result));\n };\n }\n // Struct\n const fields = this.types[type];\n if (fields) {\n const encodedType = id(this._types[type]);\n return (value) => {\n const values = fields.map(({ name, type }) => {\n const result = this.getEncoder(type)(value[name]);\n if (this._types[type]) {\n return keccak256(result);\n }\n return result;\n });\n values.unshift(encodedType);\n return hexConcat(values);\n };\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n encodeType(name) {\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 encodeData(type, value) {\n return this.getEncoder(type)(value);\n }\n hashStruct(name, value) {\n return keccak256(this.encodeData(name, value));\n }\n encode(value) {\n return this.encodeData(this.primaryType, value);\n }\n hash(value) {\n return this.hashStruct(this.primaryType, value);\n }\n _visit(type, value, callback) {\n // Basic encoder type (address, bool, uint256, etc)\n {\n const encoder = getBaseEncoder(type);\n if (encoder) {\n 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) => this._visit(subtype, v, callback));\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 }, {});\n }\n return logger.throwArgumentError(`unknown type: ${type}`, \"type\", type);\n }\n visit(value, callback) {\n return this._visit(this.primaryType, value, callback);\n }\n static from(types) {\n return new TypedDataEncoder(types);\n }\n static getPrimaryType(types) {\n return TypedDataEncoder.from(types).primaryType;\n }\n static hashStruct(name, types, value) {\n return TypedDataEncoder.from(types).hashStruct(name, value);\n }\n static hashDomain(domain) {\n const domainFields = [];\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 domainFields.sort((a, b) => {\n return domainFieldNames.indexOf(a.name) - domainFieldNames.indexOf(b.name);\n });\n return TypedDataEncoder.hashStruct(\"EIP712Domain\", { EIP712Domain: domainFields }, domain);\n }\n static encode(domain, types, value) {\n return hexConcat([\n \"0x1901\",\n TypedDataEncoder.hashDomain(domain),\n TypedDataEncoder.from(types).hash(value)\n ]);\n }\n static hash(domain, types, value) {\n return keccak256(TypedDataEncoder.encode(domain, types, value));\n }\n // Replaces all address types with ENS names with their looked up address\n static resolveNames(domain, types, value, resolveName) {\n return __awaiter(this, void 0, void 0, function* () {\n // Make a copy to isolate it from the object passed in\n domain = shallowCopy(domain);\n // Look up all ENS names\n const ensCache = {};\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 // We are going to use the encoder to visit all the base values\n const encoder = TypedDataEncoder.from(types);\n // Get a list of all the addresses\n encoder.visit(value, (type, value) => {\n if (type === \"address\" && !isHexString(value, 20)) {\n ensCache[value] = \"0x\";\n }\n return value;\n });\n // Lookup each name\n for (const name in ensCache) {\n ensCache[name] = yield resolveName(name);\n }\n // Replace the domain verifyingContract if needed\n if (domain.verifyingContract && ensCache[domain.verifyingContract]) {\n domain.verifyingContract = ensCache[domain.verifyingContract];\n }\n // Replace all ENS names with their address\n value = encoder.visit(value, (type, value) => {\n if (type === \"address\" && ensCache[value]) {\n return ensCache[value];\n }\n return value;\n });\n return { domain, value };\n });\n }\n static getPayload(domain, types, value) {\n // Validate the domain fields\n TypedDataEncoder.hashDomain(domain);\n // Derive the EIP712Domain Struct reference type\n const domainValues = {};\n const domainTypes = [];\n domainFieldNames.forEach((name) => {\n const value = domain[name];\n if (value == null) {\n return;\n }\n domainValues[name] = domainChecks[name](value);\n domainTypes.push({ name, type: domainFieldTypes[name] });\n });\n const encoder = TypedDataEncoder.from(types);\n const typesWithDomain = shallowCopy(types);\n if (typesWithDomain.EIP712Domain) {\n logger.throwArgumentError(\"types must not contain EIP712Domain type\", \"types.EIP712Domain\", types);\n }\n else {\n typesWithDomain.EIP712Domain = domainTypes;\n }\n // Validate the data structures and types\n encoder.encode(value);\n return {\n types: typesWithDomain,\n domain: domainValues,\n primaryType: encoder.primaryType,\n message: encoder.visit(value, (type, value) => {\n // bytes\n if (type.match(/^bytes(\\d*)/)) {\n return hexlify(arrayify(value));\n }\n // uint or int\n if (type.match(/^u?int/)) {\n return BigNumber.from(value).toString();\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 return logger.throwArgumentError(\"unsupported type\", \"type\", type);\n })\n };\n }\n}\n//# sourceMappingURL=typed-data.js.map","/**\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 */\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nexport class BaseX {\n constructor(alphabet) {\n defineReadOnly(this, \"alphabet\", alphabet);\n defineReadOnly(this, \"base\", alphabet.length);\n defineReadOnly(this, \"_alphabetMap\", {});\n defineReadOnly(this, \"_leader\", alphabet.charAt(0));\n // pre-compute lookup table\n for (let i = 0; i < alphabet.length; i++) {\n this._alphabetMap[alphabet.charAt(i)] = i;\n }\n }\n encode(value) {\n let source = arrayify(value);\n if (source.length === 0) {\n 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 while (carry > 0) {\n digits.push(carry % this.base);\n carry = (carry / this.base) | 0;\n }\n }\n let string = \"\";\n // deal with leading zeros\n for (let k = 0; source[k] === 0 && k < source.length - 1; ++k) {\n string += this._leader;\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 return string;\n }\n decode(value) {\n if (typeof (value) !== \"string\") {\n throw new TypeError(\"Expected String\");\n }\n let bytes = [];\n if (value.length === 0) {\n 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 if (byte === undefined) {\n throw new Error(\"Non-base\" + this.base + \" character\");\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 while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\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 return arrayify(new Uint8Array(bytes.reverse()));\n }\n}\nconst Base32 = new BaseX(\"abcdefghijklmnopqrstuvwxyz234567\");\nconst Base58 = new BaseX(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\");\nexport { Base32, Base58 };\n//console.log(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\"))\n//console.log(Base58.encode(Base58.decode(\"Qmd2V777o5XvJbYMeMb8k2nU5f8d3ciUQ5YpYuWhzv8iDj\")))\n//# sourceMappingURL=index.js.map","export var SupportedAlgorithm;\n(function (SupportedAlgorithm) {\n SupportedAlgorithm[\"sha256\"] = \"sha256\";\n SupportedAlgorithm[\"sha512\"] = \"sha512\";\n})(SupportedAlgorithm || (SupportedAlgorithm = {}));\n;\n//# sourceMappingURL=types.js.map","export const version = \"sha2/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { SupportedAlgorithm } from \"./types\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function ripemd160(data) {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\nexport function sha256(data) {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\nexport function sha512(data) {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\nexport function computeHmac(algorithm, key, data) {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n return \"0x\" + hash.hmac(hash[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n//# sourceMappingURL=sha2.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { computeHmac } from \"@ethersproject/sha2\";\nexport function pbkdf2(password, salt, iterations, keylen, hashAlgorithm) {\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 let r;\n let T;\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 //let U = createHmac(password).update(block1).digest();\n let U = arrayify(computeHmac(hashAlgorithm, password, block1));\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 //U.copy(T, 0, 0, hLen)\n T.set(U);\n for (let j = 1; j < iterations; j++) {\n //U = createHmac(password).update(U).digest();\n U = arrayify(computeHmac(hashAlgorithm, password, U));\n for (let k = 0; k < hLen; k++)\n T[k] ^= U[k];\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 return hexlify(DK);\n}\n//# sourceMappingURL=pbkdf2.js.map","export const version = \"wordlists/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\n// This gets overridden by rollup\nconst exportWordlist = false;\nimport { id } from \"@ethersproject/hash\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nexport const logger = new Logger(version);\nexport class Wordlist {\n constructor(locale) {\n logger.checkAbstract(new.target, Wordlist);\n defineReadOnly(this, \"locale\", locale);\n }\n // Subclasses may override this\n split(mnemonic) {\n return mnemonic.toLowerCase().split(/ +/g);\n }\n // Subclasses may override this\n join(words) {\n return words.join(\" \");\n }\n static check(wordlist) {\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)) {\n return \"0x\";\n }\n words.push(word);\n }\n return id(words.join(\"\\n\") + \"\\n\");\n }\n static register(lang, name) {\n if (!name) {\n name = lang.locale;\n }\n /* istanbul ignore if */\n if (exportWordlist) {\n try {\n const anyGlobal = window;\n if (anyGlobal._ethers && anyGlobal._ethers.wordlists) {\n if (!anyGlobal._ethers.wordlists[name]) {\n defineReadOnly(anyGlobal._ethers.wordlists, name, lang);\n }\n }\n }\n catch (error) { }\n }\n }\n}\n//# sourceMappingURL=wordlist.js.map","\"use strict\";\nimport { Wordlist } from \"./wordlist\";\nconst words = \"AbdikaceAbecedaAdresaAgreseAkceAktovkaAlejAlkoholAmputaceAnanasAndulkaAnekdotaAnketaAntikaAnulovatArchaAroganceAsfaltAsistentAspiraceAstmaAstronomAtlasAtletikaAtolAutobusAzylBabkaBachorBacilBaculkaBadatelBagetaBagrBahnoBakterieBaladaBaletkaBalkonBalonekBalvanBalzaBambusBankomatBarbarBaretBarmanBarokoBarvaBaterkaBatohBavlnaBazalkaBazilikaBazukaBednaBeranBesedaBestieBetonBezinkaBezmocBeztakBicyklBidloBiftekBikinyBilanceBiografBiologBitvaBizonBlahobytBlatouchBlechaBleduleBleskBlikatBliznaBlokovatBlouditBludBobekBobrBodlinaBodnoutBohatostBojkotBojovatBokorysBolestBorecBoroviceBotaBoubelBouchatBoudaBouleBouratBoxerBradavkaBramboraBrankaBratrBreptaBriketaBrkoBrlohBronzBroskevBrunetkaBrusinkaBrzdaBrzyBublinaBubnovatBuchtaBuditelBudkaBudovaBufetBujarostBukviceBuldokBulvaBundaBunkrBurzaButikBuvolBuzolaBydletBylinaBytovkaBzukotCapartCarevnaCedrCeduleCejchCejnCelaCelerCelkemCelniceCeninaCennostCenovkaCentrumCenzorCestopisCetkaChalupaChapadloCharitaChataChechtatChemieChichotChirurgChladChlebaChlubitChmelChmuraChobotChocholChodbaCholeraChomoutChopitChorobaChovChrapotChrlitChrtChrupChtivostChudinaChutnatChvatChvilkaChvostChybaChystatChytitCibuleCigaretaCihelnaCihlaCinkotCirkusCisternaCitaceCitrusCizinecCizostClonaCokolivCouvatCtitelCtnostCudnostCuketaCukrCupotCvaknoutCvalCvikCvrkotCyklistaDalekoDarebaDatelDatumDceraDebataDechovkaDecibelDeficitDeflaceDeklDekretDemokratDepreseDerbyDeskaDetektivDikobrazDiktovatDiodaDiplomDiskDisplejDivadloDivochDlahaDlouhoDluhopisDnesDobroDobytekDocentDochutitDodnesDohledDohodaDohraDojemDojniceDokladDokolaDoktorDokumentDolarDolevaDolinaDomaDominantDomluvitDomovDonutitDopadDopisDoplnitDoposudDoprovodDopustitDorazitDorostDortDosahDoslovDostatekDosudDosytaDotazDotekDotknoutDoufatDoutnatDovozceDozaduDoznatDozorceDrahotaDrakDramatikDravecDrazeDrdolDrobnostDrogerieDrozdDrsnostDrtitDrzostDubenDuchovnoDudekDuhaDuhovkaDusitDusnoDutostDvojiceDvorecDynamitEkologEkonomieElektronElipsaEmailEmiseEmoceEmpatieEpizodaEpochaEpopejEposEsejEsenceEskortaEskymoEtiketaEuforieEvoluceExekuceExkurzeExpediceExplozeExportExtraktFackaFajfkaFakultaFanatikFantazieFarmacieFavoritFazoleFederaceFejetonFenkaFialkaFigurantFilozofFiltrFinanceFintaFixaceFjordFlanelFlirtFlotilaFondFosforFotbalFotkaFotonFrakceFreskaFrontaFukarFunkceFyzikaGalejeGarantGenetikaGeologGilotinaGlazuraGlejtGolemGolfistaGotikaGrafGramofonGranuleGrepGrilGrogGroteskaGumaHadiceHadrHalaHalenkaHanbaHanopisHarfaHarpunaHavranHebkostHejkalHejnoHejtmanHektarHelmaHematomHerecHernaHesloHezkyHistorikHladovkaHlasivkyHlavaHledatHlenHlodavecHlohHloupostHltatHlubinaHluchotaHmatHmotaHmyzHnisHnojivoHnoutHoblinaHobojHochHodinyHodlatHodnotaHodovatHojnostHokejHolinkaHolkaHolubHomoleHonitbaHonoraceHoralHordaHorizontHorkoHorlivecHormonHorninaHoroskopHorstvoHospodaHostinaHotovostHoubaHoufHoupatHouskaHovorHradbaHraniceHravostHrazdaHrbolekHrdinaHrdloHrdostHrnekHrobkaHromadaHrotHroudaHrozenHrstkaHrubostHryzatHubenostHubnoutHudbaHukotHumrHusitaHustotaHvozdHybnostHydrantHygienaHymnaHysterikIdylkaIhnedIkonaIluzeImunitaInfekceInflaceInkasoInovaceInspekceInternetInvalidaInvestorInzerceIronieJablkoJachtaJahodaJakmileJakostJalovecJantarJarmarkJaroJasanJasnoJatkaJavorJazykJedinecJedleJednatelJehlanJekotJelenJelitoJemnostJenomJepiceJeseterJevitJezdecJezeroJinakJindyJinochJiskraJistotaJitrniceJizvaJmenovatJogurtJurtaKabaretKabelKabinetKachnaKadetKadidloKahanKajakKajutaKakaoKaktusKalamitaKalhotyKalibrKalnostKameraKamkolivKamnaKanibalKanoeKantorKapalinaKapelaKapitolaKapkaKapleKapotaKaprKapustaKapybaraKaramelKarotkaKartonKasaKatalogKatedraKauceKauzaKavalecKazajkaKazetaKazivostKdekolivKdesiKedlubenKempKeramikaKinoKlacekKladivoKlamKlapotKlasikaKlaunKlecKlenbaKlepatKlesnoutKlidKlimaKlisnaKloboukKlokanKlopaKloubKlubovnaKlusatKluzkostKmenKmitatKmotrKnihaKnotKoaliceKoberecKobkaKoblihaKobylaKocourKohoutKojenecKokosKoktejlKolapsKoledaKolizeKoloKomandoKometaKomikKomnataKomoraKompasKomunitaKonatKonceptKondiceKonecKonfeseKongresKoninaKonkursKontaktKonzervaKopanecKopieKopnoutKoprovkaKorbelKorektorKormidloKoroptevKorpusKorunaKorytoKorzetKosatecKostkaKotelKotletaKotoulKoukatKoupelnaKousekKouzloKovbojKozaKozorohKrabiceKrachKrajinaKralovatKrasopisKravataKreditKrejcarKresbaKrevetaKriketKritikKrizeKrkavecKrmelecKrmivoKrocanKrokKronikaKropitKroupaKrovkaKrtekKruhadloKrupiceKrutostKrvinkaKrychleKryptaKrystalKrytKudlankaKufrKujnostKuklaKulajdaKulichKulkaKulometKulturaKunaKupodivuKurtKurzorKutilKvalitaKvasinkaKvestorKynologKyselinaKytaraKyticeKytkaKytovecKyvadloLabradorLachtanLadnostLaikLakomecLamelaLampaLanovkaLasiceLasoLasturaLatinkaLavinaLebkaLeckdyLedenLedniceLedovkaLedvinaLegendaLegieLegraceLehceLehkostLehnoutLektvarLenochodLentilkaLepenkaLepidloLetadloLetecLetmoLetokruhLevhartLevitaceLevobokLibraLichotkaLidojedLidskostLihovinaLijavecLilekLimetkaLinieLinkaLinoleumListopadLitinaLitovatLobistaLodivodLogikaLogopedLokalitaLoketLomcovatLopataLopuchLordLososLotrLoudalLouhLoukaLouskatLovecLstivostLucernaLuciferLumpLuskLustraceLviceLyraLyrikaLysinaMadamMadloMagistrMahagonMajetekMajitelMajoritaMakakMakoviceMakrelaMalbaMalinaMalovatMalviceMaminkaMandleMankoMarnostMasakrMaskotMasopustMaticeMatrikaMaturitaMazanecMazivoMazlitMazurkaMdlobaMechanikMeditaceMedovinaMelasaMelounMentolkaMetlaMetodaMetrMezeraMigraceMihnoutMihuleMikinaMikrofonMilenecMilimetrMilostMimikaMincovnaMinibarMinometMinulostMiskaMistrMixovatMladostMlhaMlhovinaMlokMlsatMluvitMnichMnohemMobilMocnostModelkaModlitbaMohylaMokroMolekulaMomentkaMonarchaMonoklMonstrumMontovatMonzunMosazMoskytMostMotivaceMotorkaMotykaMouchaMoudrostMozaikaMozekMozolMramorMravenecMrkevMrtvolaMrzetMrzutostMstitelMudrcMuflonMulatMumieMuniceMusetMutaceMuzeumMuzikantMyslivecMzdaNabouratNachytatNadaceNadbytekNadhozNadobroNadpisNahlasNahnatNahodileNahraditNaivitaNajednouNajistoNajmoutNaklonitNakonecNakrmitNalevoNamazatNamluvitNanometrNaokoNaopakNaostroNapadatNapevnoNaplnitNapnoutNaposledNaprostoNaroditNarubyNarychloNasaditNasekatNaslepoNastatNatolikNavenekNavrchNavzdoryNazvatNebeNechatNeckyNedalekoNedbatNeduhNegaceNehetNehodaNejenNejprveNeklidNelibostNemilostNemocNeochotaNeonkaNepokojNerostNervNesmyslNesouladNetvorNeuronNevinaNezvykleNicotaNijakNikamNikdyNiklNikterakNitroNoclehNohaviceNominaceNoraNorekNositelNosnostNouzeNovinyNovotaNozdraNudaNudleNugetNutitNutnostNutrieNymfaObalObarvitObavaObdivObecObehnatObejmoutObezitaObhajobaObilniceObjasnitObjektObklopitOblastOblekOblibaOblohaObludaObnosObohatitObojekOboutObrazecObrnaObrubaObrysObsahObsluhaObstaratObuvObvazObvinitObvodObvykleObyvatelObzorOcasOcelOcenitOchladitOchotaOchranaOcitnoutOdbojOdbytOdchodOdcizitOdebratOdeslatOdevzdatOdezvaOdhadceOdhoditOdjetOdjinudOdkazOdkoupitOdlivOdlukaOdmlkaOdolnostOdpadOdpisOdploutOdporOdpustitOdpykatOdrazkaOdsouditOdstupOdsunOdtokOdtudOdvahaOdvetaOdvolatOdvracetOdznakOfinaOfsajdOhlasOhniskoOhradaOhrozitOhryzekOkapOkeniceOklikaOknoOkouzlitOkovyOkrasaOkresOkrsekOkruhOkupantOkurkaOkusitOlejninaOlizovatOmakOmeletaOmezitOmladinaOmlouvatOmluvaOmylOnehdyOpakovatOpasekOperaceOpiceOpilostOpisovatOporaOpoziceOpravduOprotiOrbitalOrchestrOrgieOrliceOrlojOrtelOsadaOschnoutOsikaOsivoOslavaOslepitOslnitOslovitOsnovaOsobaOsolitOspalecOstenOstrahaOstudaOstychOsvojitOteplitOtiskOtopOtrhatOtrlostOtrokOtrubyOtvorOvanoutOvarOvesOvlivnitOvoceOxidOzdobaPachatelPacientPadouchPahorekPaktPalandaPalecPalivoPalubaPamfletPamlsekPanenkaPanikaPannaPanovatPanstvoPantoflePaprikaParketaParodiePartaParukaParybaPasekaPasivitaPastelkaPatentPatronaPavoukPaznehtPazourekPeckaPedagogPejsekPekloPelotonPenaltaPendrekPenzePeriskopPeroPestrostPetardaPeticePetrolejPevninaPexesoPianistaPihaPijavicePiklePiknikPilinaPilnostPilulkaPinzetaPipetaPisatelPistolePitevnaPivnicePivovarPlacentaPlakatPlamenPlanetaPlastikaPlatitPlavidloPlazPlechPlemenoPlentaPlesPletivoPlevelPlivatPlnitPlnoPlochaPlodinaPlombaPloutPlukPlynPobavitPobytPochodPocitPoctivecPodatPodcenitPodepsatPodhledPodivitPodkladPodmanitPodnikPodobaPodporaPodrazPodstataPodvodPodzimPoeziePohankaPohnutkaPohovorPohromaPohybPointaPojistkaPojmoutPokazitPoklesPokojPokrokPokutaPokynPolednePolibekPolknoutPolohaPolynomPomaluPominoutPomlkaPomocPomstaPomysletPonechatPonorkaPonurostPopadatPopelPopisekPoplachPoprositPopsatPopudPoradcePorcePorodPoruchaPoryvPosaditPosedPosilaPoskokPoslanecPosouditPospoluPostavaPosudekPosypPotahPotkanPotleskPotomekPotravaPotupaPotvoraPoukazPoutoPouzdroPovahaPovidlaPovlakPovozPovrchPovstatPovykPovzdechPozdravPozemekPoznatekPozorPozvatPracovatPrahoryPraktikaPralesPraotecPraporekPrasePravdaPrincipPrknoProbuditProcentoProdejProfeseProhraProjektProlomitPromilePronikatPropadProrokProsbaProtonProutekProvazPrskavkaPrstenPrudkostPrutPrvekPrvohoryPsanecPsovodPstruhPtactvoPubertaPuchPudlPukavecPuklinaPukrlePultPumpaPuncPupenPusaPusinkaPustinaPutovatPutykaPyramidaPyskPytelRacekRachotRadiaceRadniceRadonRaftRagbyRaketaRakovinaRamenoRampouchRandeRarachRaritaRasovnaRastrRatolestRazanceRazidloReagovatReakceReceptRedaktorReferentReflexRejnokReklamaRekordRekrutRektorReputaceRevizeRevmaRevolverRezervaRiskovatRizikoRobotikaRodokmenRohovkaRokleRokokoRomanetoRopovodRopuchaRorejsRosolRostlinaRotmistrRotopedRotundaRoubenkaRouchoRoupRouraRovinaRovniceRozborRozchodRozdatRozeznatRozhodceRozinkaRozjezdRozkazRozlohaRozmarRozpadRozruchRozsahRoztokRozumRozvodRubrikaRuchadloRukaviceRukopisRybaRybolovRychlostRydloRypadloRytinaRyzostSadistaSahatSakoSamecSamizdatSamotaSanitkaSardinkaSasankaSatelitSazbaSazeniceSborSchovatSebrankaSeceseSedadloSedimentSedloSehnatSejmoutSekeraSektaSekundaSekvojeSemenoSenoServisSesaditSeshoraSeskokSeslatSestraSesuvSesypatSetbaSetinaSetkatSetnoutSetrvatSeverSeznamShodaShrnoutSifonSilniceSirkaSirotekSirupSituaceSkafandrSkaliskoSkanzenSkautSkeptikSkicaSkladbaSkleniceSkloSkluzSkobaSkokanSkoroSkriptaSkrzSkupinaSkvostSkvrnaSlabikaSladidloSlaninaSlastSlavnostSledovatSlepecSlevaSlezinaSlibSlinaSlizniceSlonSloupekSlovoSluchSluhaSlunceSlupkaSlzaSmaragdSmetanaSmilstvoSmlouvaSmogSmradSmrkSmrtkaSmutekSmyslSnadSnahaSnobSobotaSochaSodovkaSokolSopkaSotvaSoubojSoucitSoudceSouhlasSouladSoumrakSoupravaSousedSoutokSouvisetSpalovnaSpasitelSpisSplavSpodekSpojenecSpoluSponzorSpornostSpoustaSprchaSpustitSrandaSrazSrdceSrnaSrnecSrovnatSrpenSrstSrubStaniceStarostaStatikaStavbaStehnoStezkaStodolaStolekStopaStornoStoupatStrachStresStrhnoutStromStrunaStudnaStupniceStvolStykSubjektSubtropySucharSudostSuknoSundatSunoutSurikataSurovinaSvahSvalstvoSvetrSvatbaSvazekSvisleSvitekSvobodaSvodidloSvorkaSvrabSykavkaSykotSynekSynovecSypatSypkostSyrovostSyselSytostTabletkaTabuleTahounTajemnoTajfunTajgaTajitTajnostTaktikaTamhleTamponTancovatTanecTankerTapetaTaveninaTazatelTechnikaTehdyTekutinaTelefonTemnotaTendenceTenistaTenorTeplotaTepnaTeprveTerapieTermoskaTextilTichoTiskopisTitulekTkadlecTkaninaTlapkaTleskatTlukotTlupaTmelToaletaTopinkaTopolTorzoTouhaToulecTradiceTraktorTrampTrasaTraverzaTrefitTrestTrezorTrhavinaTrhlinaTrochuTrojiceTroskaTroubaTrpceTrpitelTrpkostTrubecTruchlitTruhliceTrusTrvatTudyTuhnoutTuhostTundraTuristaTurnajTuzemskoTvarohTvorbaTvrdostTvrzTygrTykevUbohostUbozeUbratUbrousekUbrusUbytovnaUchoUctivostUdivitUhraditUjednatUjistitUjmoutUkazatelUklidnitUklonitUkotvitUkrojitUliceUlitaUlovitUmyvadloUnavitUniformaUniknoutUpadnoutUplatnitUplynoutUpoutatUpravitUranUrazitUsednoutUsilovatUsmrtitUsnadnitUsnoutUsouditUstlatUstrnoutUtahovatUtkatUtlumitUtonoutUtopenecUtrousitUvalitUvolnitUvozovkaUzdravitUzelUzeninaUzlinaUznatVagonValchaValounVanaVandalVanilkaVaranVarhanyVarovatVcelkuVchodVdovaVedroVegetaceVejceVelbloudVeletrhVelitelVelmocVelrybaVenkovVerandaVerzeVeselkaVeskrzeVesniceVespoduVestaVeterinaVeverkaVibraceVichrVideohraVidinaVidleVilaViniceVisetVitalitaVizeVizitkaVjezdVkladVkusVlajkaVlakVlasecVlevoVlhkostVlivVlnovkaVloupatVnucovatVnukVodaVodivostVodoznakVodstvoVojenskyVojnaVojskoVolantVolbaVolitVolnoVoskovkaVozidloVozovnaVpravoVrabecVracetVrahVrataVrbaVrcholekVrhatVrstvaVrtuleVsaditVstoupitVstupVtipVybavitVybratVychovatVydatVydraVyfotitVyhledatVyhnoutVyhoditVyhraditVyhubitVyjasnitVyjetVyjmoutVyklopitVykonatVylekatVymazatVymezitVymizetVymysletVynechatVynikatVynutitVypadatVyplatitVypravitVypustitVyrazitVyrovnatVyrvatVyslovitVysokoVystavitVysunoutVysypatVytasitVytesatVytratitVyvinoutVyvolatVyvrhelVyzdobitVyznatVzaduVzbuditVzchopitVzdorVzduchVzdychatVzestupVzhledemVzkazVzlykatVznikVzorekVzpouraVztahVztekXylofonZabratZabydletZachovatZadarmoZadusitZafoukatZahltitZahoditZahradaZahynoutZajatecZajetZajistitZaklepatZakoupitZalepitZamezitZamotatZamysletZanechatZanikatZaplatitZapojitZapsatZarazitZastavitZasunoutZatajitZatemnitZatknoutZaujmoutZavalitZaveletZavinitZavolatZavrtatZazvonitZbavitZbrusuZbudovatZbytekZdalekaZdarmaZdatnostZdivoZdobitZdrojZdvihZdymadloZeleninaZemanZeminaZeptatZezaduZezdolaZhatitZhltnoutZhlubokaZhotovitZhrubaZimaZimniceZjemnitZklamatZkoumatZkratkaZkumavkaZlatoZlehkaZlobaZlomZlostZlozvykZmapovatZmarZmatekZmijeZmizetZmocnitZmodratZmrzlinaZmutovatZnakZnalostZnamenatZnovuZobrazitZotavitZoubekZoufaleZploditZpomalitZpravaZprostitZprudkaZprvuZradaZranitZrcadloZrnitostZrnoZrovnaZrychlitZrzavostZtichaZtratitZubovinaZubrZvednoutZvenkuZveselaZvonZvratZvukovodZvyk\";\nlet wordlist = null;\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\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}\nclass LangCz extends Wordlist {\n constructor() {\n super(\"cz\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\nconst langCz = new LangCz();\nWordlist.register(langCz);\nexport { langCz };\n//# sourceMappingURL=lang-cz.js.map","\"use strict\";\nimport { Wordlist } from \"./wordlist\";\nconst words = \"AbandonAbilityAbleAboutAboveAbsentAbsorbAbstractAbsurdAbuseAccessAccidentAccountAccuseAchieveAcidAcousticAcquireAcrossActActionActorActressActualAdaptAddAddictAddressAdjustAdmitAdultAdvanceAdviceAerobicAffairAffordAfraidAgainAgeAgentAgreeAheadAimAirAirportAisleAlarmAlbumAlcoholAlertAlienAllAlleyAllowAlmostAloneAlphaAlreadyAlsoAlterAlwaysAmateurAmazingAmongAmountAmusedAnalystAnchorAncientAngerAngleAngryAnimalAnkleAnnounceAnnualAnotherAnswerAntennaAntiqueAnxietyAnyApartApologyAppearAppleApproveAprilArchArcticAreaArenaArgueArmArmedArmorArmyAroundArrangeArrestArriveArrowArtArtefactArtistArtworkAskAspectAssaultAssetAssistAssumeAsthmaAthleteAtomAttackAttendAttitudeAttractAuctionAuditAugustAuntAuthorAutoAutumnAverageAvocadoAvoidAwakeAwareAwayAwesomeAwfulAwkwardAxisBabyBachelorBaconBadgeBagBalanceBalconyBallBambooBananaBannerBarBarelyBargainBarrelBaseBasicBasketBattleBeachBeanBeautyBecauseBecomeBeefBeforeBeginBehaveBehindBelieveBelowBeltBenchBenefitBestBetrayBetterBetweenBeyondBicycleBidBikeBindBiologyBirdBirthBitterBlackBladeBlameBlanketBlastBleakBlessBlindBloodBlossomBlouseBlueBlurBlushBoardBoatBodyBoilBombBoneBonusBookBoostBorderBoringBorrowBossBottomBounceBoxBoyBracketBrainBrandBrassBraveBreadBreezeBrickBridgeBriefBrightBringBriskBroccoliBrokenBronzeBroomBrotherBrownBrushBubbleBuddyBudgetBuffaloBuildBulbBulkBulletBundleBunkerBurdenBurgerBurstBusBusinessBusyButterBuyerBuzzCabbageCabinCableCactusCageCakeCallCalmCameraCampCanCanalCancelCandyCannonCanoeCanvasCanyonCapableCapitalCaptainCarCarbonCardCargoCarpetCarryCartCaseCashCasinoCastleCasualCatCatalogCatchCategoryCattleCaughtCauseCautionCaveCeilingCeleryCementCensusCenturyCerealCertainChairChalkChampionChangeChaosChapterChargeChaseChatCheapCheckCheeseChefCherryChestChickenChiefChildChimneyChoiceChooseChronicChuckleChunkChurnCigarCinnamonCircleCitizenCityCivilClaimClapClarifyClawClayCleanClerkCleverClickClientCliffClimbClinicClipClockClogCloseClothCloudClownClubClumpClusterClutchCoachCoastCoconutCodeCoffeeCoilCoinCollectColorColumnCombineComeComfortComicCommonCompanyConcertConductConfirmCongressConnectConsiderControlConvinceCookCoolCopperCopyCoralCoreCornCorrectCostCottonCouchCountryCoupleCourseCousinCoverCoyoteCrackCradleCraftCramCraneCrashCraterCrawlCrazyCreamCreditCreekCrewCricketCrimeCrispCriticCropCrossCrouchCrowdCrucialCruelCruiseCrumbleCrunchCrushCryCrystalCubeCultureCupCupboardCuriousCurrentCurtainCurveCushionCustomCuteCycleDadDamageDampDanceDangerDaringDashDaughterDawnDayDealDebateDebrisDecadeDecemberDecideDeclineDecorateDecreaseDeerDefenseDefineDefyDegreeDelayDeliverDemandDemiseDenialDentistDenyDepartDependDepositDepthDeputyDeriveDescribeDesertDesignDeskDespairDestroyDetailDetectDevelopDeviceDevoteDiagramDialDiamondDiaryDiceDieselDietDifferDigitalDignityDilemmaDinnerDinosaurDirectDirtDisagreeDiscoverDiseaseDishDismissDisorderDisplayDistanceDivertDivideDivorceDizzyDoctorDocumentDogDollDolphinDomainDonateDonkeyDonorDoorDoseDoubleDoveDraftDragonDramaDrasticDrawDreamDressDriftDrillDrinkDripDriveDropDrumDryDuckDumbDuneDuringDustDutchDutyDwarfDynamicEagerEagleEarlyEarnEarthEasilyEastEasyEchoEcologyEconomyEdgeEditEducateEffortEggEightEitherElbowElderElectricElegantElementElephantElevatorEliteElseEmbarkEmbodyEmbraceEmergeEmotionEmployEmpowerEmptyEnableEnactEndEndlessEndorseEnemyEnergyEnforceEngageEngineEnhanceEnjoyEnlistEnoughEnrichEnrollEnsureEnterEntireEntryEnvelopeEpisodeEqualEquipEraEraseErodeErosionErrorEruptEscapeEssayEssenceEstateEternalEthicsEvidenceEvilEvokeEvolveExactExampleExcessExchangeExciteExcludeExcuseExecuteExerciseExhaustExhibitExileExistExitExoticExpandExpectExpireExplainExposeExpressExtendExtraEyeEyebrowFabricFaceFacultyFadeFaintFaithFallFalseFameFamilyFamousFanFancyFantasyFarmFashionFatFatalFatherFatigueFaultFavoriteFeatureFebruaryFederalFeeFeedFeelFemaleFenceFestivalFetchFeverFewFiberFictionFieldFigureFileFilmFilterFinalFindFineFingerFinishFireFirmFirstFiscalFishFitFitnessFixFlagFlameFlashFlatFlavorFleeFlightFlipFloatFlockFloorFlowerFluidFlushFlyFoamFocusFogFoilFoldFollowFoodFootForceForestForgetForkFortuneForumForwardFossilFosterFoundFoxFragileFrameFrequentFreshFriendFringeFrogFrontFrostFrownFrozenFruitFuelFunFunnyFurnaceFuryFutureGadgetGainGalaxyGalleryGameGapGarageGarbageGardenGarlicGarmentGasGaspGateGatherGaugeGazeGeneralGeniusGenreGentleGenuineGestureGhostGiantGiftGiggleGingerGiraffeGirlGiveGladGlanceGlareGlassGlideGlimpseGlobeGloomGloryGloveGlowGlueGoatGoddessGoldGoodGooseGorillaGospelGossipGovernGownGrabGraceGrainGrantGrapeGrassGravityGreatGreenGridGriefGritGroceryGroupGrowGruntGuardGuessGuideGuiltGuitarGunGymHabitHairHalfHammerHamsterHandHappyHarborHardHarshHarvestHatHaveHawkHazardHeadHealthHeartHeavyHedgehogHeightHelloHelmetHelpHenHeroHiddenHighHillHintHipHireHistoryHobbyHockeyHoldHoleHolidayHollowHomeHoneyHoodHopeHornHorrorHorseHospitalHostHotelHourHoverHubHugeHumanHumbleHumorHundredHungryHuntHurdleHurryHurtHusbandHybridIceIconIdeaIdentifyIdleIgnoreIllIllegalIllnessImageImitateImmenseImmuneImpactImposeImproveImpulseInchIncludeIncomeIncreaseIndexIndicateIndoorIndustryInfantInflictInformInhaleInheritInitialInjectInjuryInmateInnerInnocentInputInquiryInsaneInsectInsideInspireInstallIntactInterestIntoInvestInviteInvolveIronIslandIsolateIssueItemIvoryJacketJaguarJarJazzJealousJeansJellyJewelJobJoinJokeJourneyJoyJudgeJuiceJumpJungleJuniorJunkJustKangarooKeenKeepKetchupKeyKickKidKidneyKindKingdomKissKitKitchenKiteKittenKiwiKneeKnifeKnockKnowLabLabelLaborLadderLadyLakeLampLanguageLaptopLargeLaterLatinLaughLaundryLavaLawLawnLawsuitLayerLazyLeaderLeafLearnLeaveLectureLeftLegLegalLegendLeisureLemonLendLengthLensLeopardLessonLetterLevelLiarLibertyLibraryLicenseLifeLiftLightLikeLimbLimitLinkLionLiquidListLittleLiveLizardLoadLoanLobsterLocalLockLogicLonelyLongLoopLotteryLoudLoungeLoveLoyalLuckyLuggageLumberLunarLunchLuxuryLyricsMachineMadMagicMagnetMaidMailMainMajorMakeMammalManManageMandateMangoMansionManualMapleMarbleMarchMarginMarineMarketMarriageMaskMassMasterMatchMaterialMathMatrixMatterMaximumMazeMeadowMeanMeasureMeatMechanicMedalMediaMelodyMeltMemberMemoryMentionMenuMercyMergeMeritMerryMeshMessageMetalMethodMiddleMidnightMilkMillionMimicMindMinimumMinorMinuteMiracleMirrorMiseryMissMistakeMixMixedMixtureMobileModelModifyMomMomentMonitorMonkeyMonsterMonthMoonMoralMoreMorningMosquitoMotherMotionMotorMountainMouseMoveMovieMuchMuffinMuleMultiplyMuscleMuseumMushroomMusicMustMutualMyselfMysteryMythNaiveNameNapkinNarrowNastyNationNatureNearNeckNeedNegativeNeglectNeitherNephewNerveNestNetNetworkNeutralNeverNewsNextNiceNightNobleNoiseNomineeNoodleNormalNorthNoseNotableNoteNothingNoticeNovelNowNuclearNumberNurseNutOakObeyObjectObligeObscureObserveObtainObviousOccurOceanOctoberOdorOffOfferOfficeOftenOilOkayOldOliveOlympicOmitOnceOneOnionOnlineOnlyOpenOperaOpinionOpposeOptionOrangeOrbitOrchardOrderOrdinaryOrganOrientOriginalOrphanOstrichOtherOutdoorOuterOutputOutsideOvalOvenOverOwnOwnerOxygenOysterOzonePactPaddlePagePairPalacePalmPandaPanelPanicPantherPaperParadeParentParkParrotPartyPassPatchPathPatientPatrolPatternPausePavePaymentPeacePeanutPearPeasantPelicanPenPenaltyPencilPeoplePepperPerfectPermitPersonPetPhonePhotoPhrasePhysicalPianoPicnicPicturePiecePigPigeonPillPilotPinkPioneerPipePistolPitchPizzaPlacePlanetPlasticPlatePlayPleasePledgePluckPlugPlungePoemPoetPointPolarPolePolicePondPonyPoolPopularPortionPositionPossiblePostPotatoPotteryPovertyPowderPowerPracticePraisePredictPreferPreparePresentPrettyPreventPricePridePrimaryPrintPriorityPrisonPrivatePrizeProblemProcessProduceProfitProgramProjectPromoteProofPropertyProsperProtectProudProvidePublicPuddingPullPulpPulsePumpkinPunchPupilPuppyPurchasePurityPurposePursePushPutPuzzlePyramidQualityQuantumQuarterQuestionQuickQuitQuizQuoteRabbitRaccoonRaceRackRadarRadioRailRainRaiseRallyRampRanchRandomRangeRapidRareRateRatherRavenRawRazorReadyRealReasonRebelRebuildRecallReceiveRecipeRecordRecycleReduceReflectReformRefuseRegionRegretRegularRejectRelaxReleaseReliefRelyRemainRememberRemindRemoveRenderRenewRentReopenRepairRepeatReplaceReportRequireRescueResembleResistResourceResponseResultRetireRetreatReturnReunionRevealReviewRewardRhythmRibRibbonRiceRichRideRidgeRifleRightRigidRingRiotRippleRiskRitualRivalRiverRoadRoastRobotRobustRocketRomanceRoofRookieRoomRoseRotateRoughRoundRouteRoyalRubberRudeRugRuleRunRunwayRuralSadSaddleSadnessSafeSailSaladSalmonSalonSaltSaluteSameSampleSandSatisfySatoshiSauceSausageSaveSayScaleScanScareScatterSceneSchemeSchoolScienceScissorsScorpionScoutScrapScreenScriptScrubSeaSearchSeasonSeatSecondSecretSectionSecuritySeedSeekSegmentSelectSellSeminarSeniorSenseSentenceSeriesServiceSessionSettleSetupSevenShadowShaftShallowShareShedShellSheriffShieldShiftShineShipShiverShockShoeShootShopShortShoulderShoveShrimpShrugShuffleShySiblingSickSideSiegeSightSignSilentSilkSillySilverSimilarSimpleSinceSingSirenSisterSituateSixSizeSkateSketchSkiSkillSkinSkirtSkullSlabSlamSleepSlenderSliceSlideSlightSlimSloganSlotSlowSlushSmallSmartSmileSmokeSmoothSnackSnakeSnapSniffSnowSoapSoccerSocialSockSodaSoftSolarSoldierSolidSolutionSolveSomeoneSongSoonSorrySortSoulSoundSoupSourceSouthSpaceSpareSpatialSpawnSpeakSpecialSpeedSpellSpendSphereSpiceSpiderSpikeSpinSpiritSplitSpoilSponsorSpoonSportSpotSpraySpreadSpringSpySquareSqueezeSquirrelStableStadiumStaffStageStairsStampStandStartStateStaySteakSteelStemStepStereoStickStillStingStockStomachStoneStoolStoryStoveStrategyStreetStrikeStrongStruggleStudentStuffStumbleStyleSubjectSubmitSubwaySuccessSuchSuddenSufferSugarSuggestSuitSummerSunSunnySunsetSuperSupplySupremeSureSurfaceSurgeSurpriseSurroundSurveySuspectSustainSwallowSwampSwapSwarmSwearSweetSwiftSwimSwingSwitchSwordSymbolSymptomSyrupSystemTableTackleTagTailTalentTalkTankTapeTargetTaskTasteTattooTaxiTeachTeamTellTenTenantTennisTentTermTestTextThankThatThemeThenTheoryThereTheyThingThisThoughtThreeThriveThrowThumbThunderTicketTideTigerTiltTimberTimeTinyTipTiredTissueTitleToastTobaccoTodayToddlerToeTogetherToiletTokenTomatoTomorrowToneTongueTonightToolToothTopTopicToppleTorchTornadoTortoiseTossTotalTouristTowardTowerTownToyTrackTradeTrafficTragicTrainTransferTrapTrashTravelTrayTreatTreeTrendTrialTribeTrickTriggerTrimTripTrophyTroubleTruckTrueTrulyTrumpetTrustTruthTryTubeTuitionTumbleTunaTunnelTurkeyTurnTurtleTwelveTwentyTwiceTwinTwistTwoTypeTypicalUglyUmbrellaUnableUnawareUncleUncoverUnderUndoUnfairUnfoldUnhappyUniformUniqueUnitUniverseUnknownUnlockUntilUnusualUnveilUpdateUpgradeUpholdUponUpperUpsetUrbanUrgeUsageUseUsedUsefulUselessUsualUtilityVacantVacuumVagueValidValleyValveVanVanishVaporVariousVastVaultVehicleVelvetVendorVentureVenueVerbVerifyVersionVeryVesselVeteranViableVibrantViciousVictoryVideoViewVillageVintageViolinVirtualVirusVisaVisitVisualVitalVividVocalVoiceVoidVolcanoVolumeVoteVoyageWageWagonWaitWalkWallWalnutWantWarfareWarmWarriorWashWaspWasteWaterWaveWayWealthWeaponWearWeaselWeatherWebWeddingWeekendWeirdWelcomeWestWetWhaleWhatWheatWheelWhenWhereWhipWhisperWideWidthWifeWildWillWinWindowWineWingWinkWinnerWinterWireWisdomWiseWishWitnessWolfWomanWonderWoodWoolWordWorkWorldWorryWorthWrapWreckWrestleWristWriteWrongYardYearYellowYouYoungYouthZebraZeroZoneZoo\";\nlet wordlist = null;\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\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}\nclass LangEn extends Wordlist {\n constructor() {\n super(\"en\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\nconst langEn = new LangEn();\nWordlist.register(langEn);\nexport { langEn };\n//# sourceMappingURL=lang-en.js.map","\"use strict\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { logger, Wordlist } from \"./wordlist\";\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\";\nconst lookup = {};\nlet wordlist = null;\nfunction dropDiacritic(word) {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\nfunction expand(word) {\n const output = [];\n Array.prototype.forEach.call(toUtf8Bytes(word), (c) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n // n-tilde\n }\n else if (c === 126) {\n output.push(110);\n output.push(204);\n output.push(131);\n }\n else {\n output.push(c);\n }\n });\n return toUtf8String(output);\n}\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\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 // 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}\nclass LangEs extends Wordlist {\n constructor() {\n super(\"es\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\nconst langEs = new LangEs();\nWordlist.register(langEs);\nexport { langEs };\n//# sourceMappingURL=lang-es.js.map","\"use strict\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { logger, Wordlist } from \"./wordlist\";\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\";\nlet wordlist = null;\nconst lookup = {};\nfunction dropDiacritic(word) {\n logger.checkNormalize();\n return toUtf8String(Array.prototype.filter.call(toUtf8Bytes(word.normalize(\"NFD\").toLowerCase()), (c) => {\n return ((c >= 65 && c <= 90) || (c >= 97 && c <= 123));\n }));\n}\nfunction expand(word) {\n const output = [];\n Array.prototype.forEach.call(toUtf8Bytes(word), (c) => {\n // Acute accent\n if (c === 47) {\n output.push(204);\n output.push(129);\n // Grave accent\n }\n else if (c === 45) {\n output.push(204);\n output.push(128);\n }\n else {\n output.push(c);\n }\n });\n return toUtf8String(output);\n}\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\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 // 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}\nclass LangFr extends Wordlist {\n constructor() {\n super(\"fr\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return lookup[dropDiacritic(word)];\n }\n}\nconst langFr = new LangFr();\nWordlist.register(langFr);\nexport { langFr };\n//# sourceMappingURL=lang-fr.js.map","\"use strict\";\nimport { hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { logger, Wordlist } from \"./wordlist\";\nconst data = [\n // 4-kana words\n \"AQRASRAGBAGUAIRAHBAghAURAdBAdcAnoAMEAFBAFCBKFBQRBSFBCXBCDBCHBGFBEQBpBBpQBIkBHNBeOBgFBVCBhBBhNBmOBmRBiHBiFBUFBZDBvFBsXBkFBlcBjYBwDBMBBTBBTRBWBBWXXaQXaRXQWXSRXCFXYBXpHXOQXHRXhRXuRXmXXbRXlXXwDXTRXrCXWQXWGaBWaKcaYgasFadQalmaMBacAKaRKKBKKXKKjKQRKDRKCYKCRKIDKeVKHcKlXKjHKrYNAHNBWNaRNKcNIBNIONmXNsXNdXNnBNMBNRBNrXNWDNWMNFOQABQAHQBrQXBQXFQaRQKXQKDQKOQKFQNBQNDQQgQCXQCDQGBQGDQGdQYXQpBQpQQpHQLXQHuQgBQhBQhCQuFQmXQiDQUFQZDQsFQdRQkHQbRQlOQlmQPDQjDQwXQMBQMDQcFQTBQTHQrDDXQDNFDGBDGQDGRDpFDhFDmXDZXDbRDMYDRdDTRDrXSAhSBCSBrSGQSEQSHBSVRShYShkSyQSuFSiBSdcSoESocSlmSMBSFBSFKSFNSFdSFcCByCaRCKcCSBCSRCCrCGbCEHCYXCpBCpQCIBCIHCeNCgBCgFCVECVcCmkCmwCZXCZFCdRClOClmClFCjDCjdCnXCwBCwXCcRCFQCFjGXhGNhGDEGDMGCDGCHGIFGgBGVXGVEGVRGmXGsXGdYGoSGbRGnXGwXGwDGWRGFNGFLGFOGFdGFkEABEBDEBFEXOEaBEKSENBENDEYXEIgEIkEgBEgQEgHEhFEudEuFEiBEiHEiFEZDEvBEsXEsFEdXEdREkFEbBEbRElFEPCEfkEFNYAEYAhYBNYQdYDXYSRYCEYYoYgQYgRYuRYmCYZTYdBYbEYlXYjQYRbYWRpKXpQopQnpSFpCXpIBpISphNpdBpdRpbRpcZpFBpFNpFDpFopFrLADLBuLXQLXcLaFLCXLEhLpBLpFLHXLeVLhILdHLdRLoDLbRLrXIABIBQIBCIBsIBoIBMIBRIXaIaRIKYIKRINBINuICDIGBIIDIIkIgRIxFIyQIiHIdRIbYIbRIlHIwRIMYIcRIRVITRIFBIFNIFQOABOAFOBQOaFONBONMOQFOSFOCDOGBOEQOpBOLXOIBOIFOgQOgFOyQOycOmXOsXOdIOkHOMEOMkOWWHBNHXNHXWHNXHDuHDRHSuHSRHHoHhkHmRHdRHkQHlcHlRHwBHWcgAEgAggAkgBNgBQgBEgXOgYcgLXgHjgyQgiBgsFgdagMYgWSgFQgFEVBTVXEVKBVKNVKDVKYVKRVNBVNYVDBVDxVSBVSRVCjVGNVLXVIFVhBVhcVsXVdRVbRVlRhBYhKYhDYhGShxWhmNhdahdkhbRhjohMXhTRxAXxXSxKBxNBxEQxeNxeQxhXxsFxdbxlHxjcxFBxFNxFQxFOxFoyNYyYoybcyMYuBQuBRuBruDMuCouHBudQukkuoBulVuMXuFEmCYmCRmpRmeDmiMmjdmTFmFQiADiBOiaRiKRiNBiNRiSFiGkiGFiERipRiLFiIFihYibHijBijEiMXiWBiFBiFCUBQUXFUaRUNDUNcUNRUNFUDBUSHUCDUGBUGFUEqULNULoUIRUeEUeYUgBUhFUuRUiFUsXUdFUkHUbBUjSUjYUwXUMDUcHURdUTBUrBUrXUrQZAFZXZZaRZKFZNBZQFZCXZGBZYdZpBZLDZIFZHXZHNZeQZVRZVFZmXZiBZvFZdFZkFZbHZbFZwXZcCZcRZRBvBQvBGvBLvBWvCovMYsAFsBDsaRsKFsNFsDrsSHsSFsCXsCRsEBsEHsEfspBsLBsLDsIgsIRseGsbRsFBsFQsFSdNBdSRdCVdGHdYDdHcdVbdySduDdsXdlRdwXdWYdWcdWRkBMkXOkaRkNIkNFkSFkCFkYBkpRkeNkgBkhVkmXksFklVkMBkWDkFNoBNoaQoaFoNBoNXoNaoNEoSRoEroYXoYCoYbopRopFomXojkowXorFbBEbEIbdBbjYlaRlDElMXlFDjKjjSRjGBjYBjYkjpRjLXjIBjOFjeVjbRjwBnXQnSHnpFnLXnINnMBnTRwXBwXNwXYwNFwQFwSBwGFwLXwLDweNwgBwuHwjDwnXMBXMpFMIBMeNMTHcaQcNBcDHcSFcCXcpBcLXcLDcgFcuFcnXcwXccDcTQcrFTQErXNrCHrpFrgFrbFrTHrFcWNYWNbWEHWMXWTR\",\n // 5-kana words\n \"ABGHABIJAEAVAYJQALZJAIaRAHNXAHdcAHbRAZJMAZJRAZTRAdVJAklmAbcNAjdRAMnRAMWYAWpRAWgRAFgBAFhBAFdcBNJBBNJDBQKBBQhcBQlmBDEJBYJkBYJTBpNBBpJFBIJBBIJDBIcABOKXBOEJBOVJBOiJBOZJBepBBeLXBeIFBegBBgGJBVJXBuocBiJRBUJQBlXVBlITBwNFBMYVBcqXBTlmBWNFBWiJBWnRBFGHBFwXXKGJXNJBXNZJXDTTXSHSXSVRXSlHXCJDXGQJXEhXXYQJXYbRXOfXXeNcXVJFXhQJXhEJXdTRXjdXXMhBXcQTXRGBXTEBXTnQXFCXXFOFXFgFaBaFaBNJaBCJaBpBaBwXaNJKaNJDaQIBaDpRaEPDaHMFamDJalEJaMZJaFaFaFNBaFQJaFLDaFVHKBCYKBEBKBHDKXaFKXGdKXEJKXpHKXIBKXZDKXwXKKwLKNacKNYJKNJoKNWcKDGdKDTRKChXKGaRKGhBKGbRKEBTKEaRKEPTKLMDKLWRKOHDKVJcKdBcKlIBKlOPKFSBKFEPKFpFNBNJNJBQNBGHNBEPNBHXNBgFNBVXNBZDNBsXNBwXNNaRNNJDNNJENNJkNDCJNDVDNGJRNJiDNZJNNsCJNJFNNFSBNFCXNFEPNFLXNFIFQJBFQCaRQJEQQLJDQLJFQIaRQOqXQHaFQHHQQVJXQVJDQhNJQmEIQZJFQsJXQJrFQWbRDJABDBYJDXNFDXCXDXLXDXZDDXsJDQqXDSJFDJCXDEPkDEqXDYmQDpSJDOCkDOGQDHEIDVJDDuDuDWEBDJFgSBNDSBSFSBGHSBIBSBTQSKVYSJQNSJQiSJCXSEqXSJYVSIiJSOMYSHAHSHaQSeCFSepQSegBSHdHSHrFShSJSJuHSJUFSkNRSrSrSWEBSFaHSJFQSFCXSFGDSFYXSFODSFgBSFVXSFhBSFxFSFkFSFbBSFMFCADdCJXBCXaFCXKFCXNFCXCXCXGBCXEJCXYBCXLDCXIBCXOPCXHXCXgBCXhBCXiBCXlDCXcHCJNBCJNFCDCJCDGBCDVXCDhBCDiDCDJdCCmNCpJFCIaRCOqXCHCHCHZJCViJCuCuCmddCJiFCdNBCdHhClEJCnUJCreSCWlgCWTRCFBFCFNBCFYBCFVFCFhFCFdSCFTBCFWDGBNBGBQFGJBCGBEqGBpBGBgQGNBEGNJYGNkOGNJRGDUFGJpQGHaBGJeNGJeEGVBlGVKjGiJDGvJHGsVJGkEBGMIJGWjNGFBFGFCXGFGBGFYXGFpBGFMFEASJEAWpEJNFECJVEIXSEIQJEOqXEOcFEeNcEHEJEHlFEJgFEhlmEmDJEmZJEiMBEUqXEoSREPBFEPXFEPKFEPSFEPEFEPpFEPLXEPIBEJPdEPcFEPTBEJnXEqlHEMpREFCXEFODEFcFYASJYJAFYBaBYBVXYXpFYDhBYCJBYJGFYYbRYeNcYJeVYiIJYZJcYvJgYvJRYJsXYsJFYMYMYreVpBNHpBEJpBwXpQxFpYEJpeNDpJeDpeSFpeCHpHUJpHbBpHcHpmUJpiiJpUJrpsJuplITpFaBpFQqpFGBpFEfpFYBpFpBpFLJpFIDpFgBpFVXpFyQpFuFpFlFpFjDpFnXpFwXpJFMpFTBLXCJLXEFLXhFLXUJLXbFLalmLNJBLSJQLCLCLGJBLLDJLHaFLeNFLeSHLeCXLepFLhaRLZsJLsJDLsJrLocaLlLlLMdbLFNBLFSBLFEHLFkFIBBFIBXFIBaQIBKXIBSFIBpHIBLXIBgBIBhBIBuHIBmXIBiFIBZXIBvFIBbFIBjQIBwXIBWFIKTRIQUJIDGFICjQIYSRIINXIJeCIVaRImEkIZJFIvJRIsJXIdCJIJoRIbBQIjYBIcqXITFVIreVIFKFIFSFIFCJIFGFIFLDIFIBIJFOIFgBIFVXIJFhIFxFIFmXIFdHIFbBIJFrIJFWOBGBOQfXOOKjOUqXOfXBOqXEOcqXORVJOFIBOFlDHBIOHXiFHNTRHCJXHIaRHHJDHHEJHVbRHZJYHbIBHRsJHRkDHWlmgBKFgBSBgBCDgBGHgBpBgBIBgBVJgBuBgBvFgKDTgQVXgDUJgGSJgOqXgmUMgZIJgTUJgWIEgFBFgFNBgFDJgFSFgFGBgFYXgJFOgFgQgFVXgFhBgFbHgJFWVJABVQKcVDgFVOfXVeDFVhaRVmGdViJYVMaRVFNHhBNDhBCXhBEqhBpFhBLXhNJBhSJRheVXhhKEhxlmhZIJhdBQhkIJhbMNhMUJhMZJxNJgxQUJxDEkxDdFxSJRxplmxeSBxeCXxeGFxeYXxepQxegBxWVcxFEQxFLXxFIBxFgBxFxDxFZtxFdcxFbBxFwXyDJXyDlcuASJuDJpuDIBuCpJuGSJuIJFueEFuZIJusJXudWEuoIBuWGJuFBcuFKEuFNFuFQFuFDJuFGJuFVJuFUtuFdHuFTBmBYJmNJYmQhkmLJDmLJomIdXmiJYmvJRmsJRmklmmMBymMuCmclmmcnQiJABiJBNiJBDiBSFiBCJiBEFiBYBiBpFiBLXiBTHiJNciDEfiCZJiECJiJEqiOkHiHKFieNDiHJQieQcieDHieSFieCXieGFieEFieIHiegFihUJixNoioNXiFaBiFKFiFNDiFEPiFYXitFOitFHiFgBiFVEiFmXiFitiFbBiFMFiFrFUCXQUIoQUIJcUHQJUeCEUHwXUUJDUUqXUdWcUcqXUrnQUFNDUFSHUFCFUFEfUFLXUtFOZBXOZXSBZXpFZXVXZEQJZEJkZpDJZOqXZeNHZeCDZUqXZFBQZFEHZFLXvBAFvBKFvBCXvBEPvBpHvBIDvBgFvBuHvQNJvFNFvFGBvFIBvJFcsXCDsXLXsXsXsXlFsXcHsQqXsJQFsEqXseIFsFEHsFjDdBxOdNpRdNJRdEJbdpJRdhZJdnSJdrjNdFNJdFQHdFhNkNJDkYaRkHNRkHSRkVbRkuMRkjSJkcqDoSJFoEiJoYZJoOfXohEBoMGQocqXbBAFbBXFbBaFbBNDbBGBbBLXbBTBbBWDbGJYbIJHbFQqbFpQlDgQlOrFlVJRjGEBjZJRnXvJnXbBnEfHnOPDngJRnxfXnUJWwXEJwNpJwDpBwEfXwrEBMDCJMDGHMDIJMLJDcQGDcQpHcqXccqNFcqCXcFCJRBSBRBGBRBEJRBpQTBNFTBQJTBpBTBVXTFABTFSBTFCFTFGBTFMDrXCJrXLDrDNJrEfHrFQJrFitWNjdWNTR\",\n // 6-kana words\n \"AKLJMANOPFASNJIAEJWXAYJNRAIIbRAIcdaAeEfDAgidRAdjNYAMYEJAMIbRAFNJBAFpJFBBIJYBDZJFBSiJhBGdEBBEJfXBEJqXBEJWRBpaUJBLXrXBIYJMBOcfXBeEfFBestXBjNJRBcDJOBFEqXXNvJRXDMBhXCJNYXOAWpXONJWXHDEBXeIaRXhYJDXZJSJXMDJOXcASJXFVJXaBQqXaBZJFasXdQaFSJQaFEfXaFpJHaFOqXKBNSRKXvJBKQJhXKEJQJKEJGFKINJBKIJjNKgJNSKVElmKVhEBKiJGFKlBgJKjnUJKwsJYKMFIJKFNJDKFIJFKFOfXNJBSFNJBCXNBpJFNJBvQNJBMBNJLJXNJOqXNJeCXNJeGFNdsJCNbTKFNwXUJQNFEPQDiJcQDMSJQSFpBQGMQJQJeOcQyCJEQUJEBQJFBrQFEJqDXDJFDJXpBDJXIMDGiJhDIJGRDJeYcDHrDJDVXgFDkAWpDkIgRDjDEqDMvJRDJFNFDJFIBSKclmSJQOFSJQVHSJQjDSJGJBSJGJFSECJoSHEJqSJHTBSJVJDSViJYSZJNBSJsJDSFSJFSFEfXSJFLXCBUJVCJXSBCJXpBCXVJXCJXsXCJXdFCJNJHCLIJgCHiJFCVNJMChCJhCUHEJCsJTRCJdYcCoQJCCFEfXCFIJgCFUJxCFstFGJBaQGJBIDGQJqXGYJNRGJHKFGeQqDGHEJFGJeLXGHIiJGHdBlGUJEBGkIJTGFQPDGJFEqEAGegEJIJBEJVJXEhQJTEiJNcEJZJFEJoEqEjDEqEPDsXEPGJBEPOqXEPeQFEfDiDEJfEFEfepQEfMiJEqXNBEqDIDEqeSFEqVJXEMvJRYXNJDYXEJHYKVJcYYJEBYJeEcYJUqXYFpJFYFstXpAZJMpBSJFpNBNFpeQPDpHLJDpHIJFpHgJFpeitFpHZJFpJFADpFSJFpJFCJpFOqXpFitBpJFZJLXIJFLIJgRLVNJWLVHJMLwNpJLFGJBLFLJDLFOqXLJFUJIBDJXIBGJBIJBYQIJBIBIBOqXIBcqDIEGJFILNJTIIJEBIOiJhIJeNBIJeIBIhiJIIWoTRIJFAHIJFpBIJFuHIFUtFIJFTHOSBYJOEcqXOHEJqOvBpFOkVJrObBVJOncqDOcNJkHhNJRHuHJuHdMhBgBUqXgBsJXgONJBgHNJDgHHJQgJeitgHsJXgJyNagyDJBgZJDrgsVJQgkEJNgkjSJgJFAHgFCJDgFZtMVJXNFVXQfXVJXDJVXoQJVQVJQVDEfXVDvJHVEqNFVeQfXVHpJFVHxfXVVJSRVVmaRVlIJOhCXVJhHjYkhxCJVhWVUJhWiJcxBNJIxeEqDxfXBFxcFEPxFSJFxFYJXyBDQJydaUJyFOPDuYCJYuLvJRuHLJXuZJLDuFOPDuFZJHuFcqXmKHJdmCQJcmOsVJiJAGFitLCFieOfXiestXiZJMEikNJQirXzFiFQqXiFIJFiFZJFiFvtFUHpJFUteIcUteOcUVCJkUhdHcUbEJEUJqXQUMNJhURjYkUFitFZDGJHZJIxDZJVJXZJFDJZJFpQvBNJBvBSJFvJxBrseQqDsVFVJdFLJDkEJNBkmNJYkFLJDoQJOPoGsJRoEAHBoEJfFbBQqDbBZJHbFVJXlFIJBjYIrXjeitcjjCEBjWMNBwXQfXwXOaFwDsJXwCJTRwrCZJMDNJQcDDJFcqDOPRYiJFTBsJXTQIJBTFEfXTFLJDrXEJFrEJXMrFZJFWEJdEWYTlm\",\n // 7-kana words\n \"ABCDEFACNJTRAMBDJdAcNJVXBLNJEBXSIdWRXErNJkXYDJMBXZJCJaXMNJaYKKVJKcKDEJqXKDcNJhKVJrNYKbgJVXKFVJSBNBYBwDNJeQfXNJeEqXNhGJWENJFiJRQlIJbEQJfXxDQqXcfXQFNDEJQFwXUJDYcnUJDJIBgQDIUJTRDJFEqDSJQSJFSJQIJFSOPeZtSJFZJHCJXQfXCTDEqFGJBSJFGJBOfXGJBcqXGJHNJDGJRLiJEJfXEqEJFEJPEFpBEJYJBZJFYBwXUJYiJMEBYJZJyTYTONJXpQMFXFpeGIDdpJFstXpJFcPDLBVSJRLHQJqXLJFZJFIJBNJDIJBUqXIBkFDJIJEJPTIYJGWRIJeQPDIJeEfHIJFsJXOqGDSFHXEJqXgJCsJCgGQJqXgdQYJEgFMFNBgJFcqDVJwXUJVJFZJchIgJCCxOEJqXxOwXUJyDJBVRuscisciJBiJBieUtqXiJFDJkiFsJXQUGEZJcUJFsJXZtXIrXZDZJDrZJFNJDZJFstXvJFQqXvJFCJEsJXQJqkhkNGBbDJdTRbYJMEBlDwXUJMEFiJFcfXNJDRcNJWMTBLJXC\",\n // 8-kana words\n \"BraFUtHBFSJFdbNBLJXVJQoYJNEBSJBEJfHSJHwXUJCJdAZJMGjaFVJXEJPNJBlEJfFiJFpFbFEJqIJBVJCrIBdHiJhOPFChvJVJZJNJWxGFNIFLueIBQJqUHEJfUFstOZJDrlXEASJRlXVJXSFwVJNJWD\",\n // 9-kana words\n \"QJEJNNJDQJEJIBSFQJEJxegBQJEJfHEPSJBmXEJFSJCDEJqXLXNJFQqXIcQsFNJFIFEJqXUJgFsJXIJBUJEJfHNFvJxEqXNJnXUJFQqD\",\n // 10-kana words\n \"IJBEJqXZJ\"\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\";\nlet wordlist = null;\nfunction hex(word) {\n return hexlify(toUtf8Bytes(word));\n}\nconst KiYoKu = \"0xe3818de38284e3818f\";\nconst KyoKu = \"0xe3818de38283e3818f\";\nfunction loadWords(lang) {\n if (wordlist !== null) {\n return;\n }\n wordlist = [];\n // Transforms for normalizing (sort is a not quite UTF-8)\n const transform = {};\n // Delete the diacritic marks\n transform[toUtf8String([227, 130, 154])] = false;\n transform[toUtf8String([227, 130, 153])] = false;\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 // Normalize words using the transform\n function normalize(word) {\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) {\n continue;\n }\n if (target) {\n kana = target;\n }\n result += kana;\n }\n return result;\n }\n // Sort how the Japanese list is sorted\n function sortJapanese(a, b) {\n a = normalize(a);\n b = normalize(b);\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\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 // For some reason kyoku and kiyoku are flipped in node (!!).\n // The order SHOULD be:\n // - kyoku\n // - kiyoku\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 // 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}\nclass LangJa extends Wordlist {\n constructor() {\n super(\"ja\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n split(mnemonic) {\n logger.checkNormalize();\n return mnemonic.split(/(?:\\u3000| )+/g);\n }\n join(words) {\n return words.join(\"\\u3000\");\n }\n}\nconst langJa = new LangJa();\nWordlist.register(langJa);\nexport { langJa };\n//# sourceMappingURL=lang-ja.js.map","\"use strict\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { Wordlist } from \"./wordlist\";\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];\nconst codes = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*\";\nfunction getHangul(code) {\n if (code >= 40) {\n code = code + 168 - 40;\n }\n else if (code >= 19) {\n code = code + 97 - 19;\n }\n return toUtf8String([225, (code >> 6) + 132, (code & 0x3f) + 128]);\n}\nlet wordlist = null;\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\n wordlist = [];\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 wordlist.sort();\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}\nclass LangKo extends Wordlist {\n constructor() {\n super(\"ko\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\nconst langKo = new LangKo();\nWordlist.register(langKo);\nexport { langKo };\n//# sourceMappingURL=lang-ko.js.map","\"use strict\";\nimport { Wordlist } from \"./wordlist\";\nconst words = \"AbacoAbbaglioAbbinatoAbeteAbissoAbolireAbrasivoAbrogatoAccadereAccennoAccusatoAcetoneAchilleAcidoAcquaAcreAcrilicoAcrobataAcutoAdagioAddebitoAddomeAdeguatoAderireAdipeAdottareAdulareAffabileAffettoAffissoAffrantoAforismaAfosoAfricanoAgaveAgenteAgevoleAggancioAgireAgitareAgonismoAgricoloAgrumetoAguzzoAlabardaAlatoAlbatroAlberatoAlboAlbumeAlceAlcolicoAlettoneAlfaAlgebraAlianteAlibiAlimentoAllagatoAllegroAllievoAllodolaAllusivoAlmenoAlogenoAlpacaAlpestreAltalenaAlternoAlticcioAltroveAlunnoAlveoloAlzareAmalgamaAmanitaAmarenaAmbitoAmbratoAmebaAmericaAmetistaAmicoAmmassoAmmendaAmmirareAmmonitoAmoreAmpioAmpliareAmuletoAnacardoAnagrafeAnalistaAnarchiaAnatraAncaAncellaAncoraAndareAndreaAnelloAngeloAngolareAngustoAnimaAnnegareAnnidatoAnnoAnnuncioAnonimoAnticipoAnziApaticoAperturaApodeApparireAppetitoAppoggioApprodoAppuntoAprileArabicaArachideAragostaAraldicaArancioAraturaArazzoArbitroArchivioArditoArenileArgentoArgineArgutoAriaArmoniaArneseArredatoArringaArrostoArsenicoArsoArteficeArzilloAsciuttoAscoltoAsepsiAsetticoAsfaltoAsinoAsolaAspiratoAsproAssaggioAsseAssolutoAssurdoAstaAstenutoAsticeAstrattoAtavicoAteismoAtomicoAtonoAttesaAttivareAttornoAttritoAttualeAusilioAustriaAutistaAutonomoAutunnoAvanzatoAvereAvvenireAvvisoAvvolgereAzioneAzotoAzzimoAzzurroBabeleBaccanoBacinoBacoBadessaBadilataBagnatoBaitaBalconeBaldoBalenaBallataBalzanoBambinoBandireBaraondaBarbaroBarcaBaritonoBarlumeBaroccoBasilicoBassoBatostaBattutoBauleBavaBavosaBeccoBeffaBelgioBelvaBendaBenevoleBenignoBenzinaBereBerlinaBetaBibitaBiciBidoneBifidoBigaBilanciaBimboBinocoloBiologoBipedeBipolareBirbanteBirraBiscottoBisestoBisnonnoBisonteBisturiBizzarroBlandoBlattaBollitoBonificoBordoBoscoBotanicoBottinoBozzoloBraccioBradipoBramaBrancaBravuraBretellaBrevettoBrezzaBrigliaBrillanteBrindareBroccoloBrodoBronzinaBrulloBrunoBubboneBucaBudinoBuffoneBuioBulboBuonoBurloneBurrascaBussolaBustaCadettoCaducoCalamaroCalcoloCalesseCalibroCalmoCaloriaCambusaCamerataCamiciaCamminoCamolaCampaleCanapaCandelaCaneCaninoCanottoCantinaCapaceCapelloCapitoloCapogiroCapperoCapraCapsulaCarapaceCarcassaCardoCarismaCarovanaCarrettoCartolinaCasaccioCascataCasermaCasoCassoneCastelloCasualeCatastaCatenaCatrameCautoCavilloCedibileCedrataCefaloCelebreCellulareCenaCenoneCentesimoCeramicaCercareCertoCerumeCervelloCesoiaCespoCetoChelaChiaroChiccaChiedereChimeraChinaChirurgoChitarraCiaoCiclismoCifrareCignoCilindroCiottoloCircaCirrosiCitricoCittadinoCiuffoCivettaCivileClassicoClinicaCloroCoccoCodardoCodiceCoerenteCognomeCollareColmatoColoreColposoColtivatoColzaComaCometaCommandoComodoComputerComuneConcisoCondurreConfermaCongelareConiugeConnessoConoscereConsumoContinuoConvegnoCopertoCopioneCoppiaCopricapoCorazzaCordataCoricatoCorniceCorollaCorpoCorredoCorsiaCorteseCosmicoCostanteCotturaCovatoCratereCravattaCreatoCredereCremosoCrescitaCretaCricetoCrinaleCrisiCriticoCroceCronacaCrostataCrucialeCruscaCucireCuculoCuginoCullatoCupolaCuratoreCursoreCurvoCuscinoCustodeDadoDainoDalmataDamerinoDanielaDannosoDanzareDatatoDavantiDavveroDebuttoDecennioDecisoDeclinoDecolloDecretoDedicatoDefinitoDeformeDegnoDelegareDelfinoDelirioDeltaDemenzaDenotatoDentroDepositoDerapataDerivareDerogaDescrittoDesertoDesiderioDesumereDetersivoDevotoDiametroDicembreDiedroDifesoDiffusoDigerireDigitaleDiluvioDinamicoDinnanziDipintoDiplomaDipoloDiradareDireDirottoDirupoDisagioDiscretoDisfareDisgeloDispostoDistanzaDisumanoDitoDivanoDiveltoDividereDivoratoDobloneDocenteDoganaleDogmaDolceDomatoDomenicaDominareDondoloDonoDormireDoteDottoreDovutoDozzinaDragoDruidoDubbioDubitareDucaleDunaDuomoDupliceDuraturoEbanoEccessoEccoEclissiEconomiaEderaEdicolaEdileEditoriaEducareEgemoniaEgliEgoismoEgregioElaboratoElargireEleganteElencatoElettoElevareElficoElicaElmoElsaElusoEmanatoEmblemaEmessoEmiroEmotivoEmozioneEmpiricoEmuloEndemicoEnduroEnergiaEnfasiEnotecaEntrareEnzimaEpatiteEpilogoEpisodioEpocaleEppureEquatoreErarioErbaErbosoEredeEremitaErigereErmeticoEroeErosivoErranteEsagonoEsameEsanimeEsaudireEscaEsempioEsercitoEsibitoEsigenteEsistereEsitoEsofagoEsortatoEsosoEspansoEspressoEssenzaEssoEstesoEstimareEstoniaEstrosoEsultareEtilicoEtnicoEtruscoEttoEuclideoEuropaEvasoEvidenzaEvitatoEvolutoEvvivaFabbricaFaccendaFachiroFalcoFamigliaFanaleFanfaraFangoFantasmaFareFarfallaFarinosoFarmacoFasciaFastosoFasulloFaticareFatoFavolosoFebbreFecolaFedeFegatoFelpaFeltroFemminaFendereFenomenoFermentoFerroFertileFessuraFestivoFettaFeudoFiabaFiduciaFifaFiguratoFiloFinanzaFinestraFinireFioreFiscaleFisicoFiumeFlaconeFlamencoFleboFlemmaFloridoFluenteFluoroFobicoFocacciaFocosoFoderatoFoglioFolataFolcloreFolgoreFondenteFoneticoFoniaFontanaForbitoForchettaForestaFormicaFornaioForoFortezzaForzareFosfatoFossoFracassoFranaFrassinoFratelloFreccettaFrenataFrescoFrigoFrollinoFrondeFrugaleFruttaFucilataFucsiaFuggenteFulmineFulvoFumanteFumettoFumosoFuneFunzioneFuocoFurboFurgoneFuroreFusoFutileGabbianoGaffeGalateoGallinaGaloppoGamberoGammaGaranziaGarboGarofanoGarzoneGasdottoGasolioGastricoGattoGaudioGazeboGazzellaGecoGelatinaGelsoGemelloGemmatoGeneGenitoreGennaioGenotipoGergoGhepardoGhiaccioGhisaGialloGildaGineproGiocareGioielloGiornoGioveGiratoGironeGittataGiudizioGiuratoGiustoGlobuloGlutineGnomoGobbaGolfGomitoGommoneGonfioGonnaGovernoGracileGradoGraficoGrammoGrandeGrattareGravosoGraziaGrecaGreggeGrifoneGrigioGrinzaGrottaGruppoGuadagnoGuaioGuantoGuardareGufoGuidareIbernatoIconaIdenticoIdillioIdoloIdraIdricoIdrogenoIgieneIgnaroIgnoratoIlareIllesoIllogicoIlludereImballoImbevutoImboccoImbutoImmaneImmersoImmolatoImpaccoImpetoImpiegoImportoImprontaInalareInarcareInattivoIncantoIncendioInchinoIncisivoInclusoIncontroIncrocioIncuboIndagineIndiaIndoleIneditoInfattiInfilareInflittoIngaggioIngegnoIngleseIngordoIngrossoInnescoInodoreInoltrareInondatoInsanoInsettoInsiemeInsonniaInsulinaIntasatoInteroIntonacoIntuitoInumidireInvalidoInveceInvitoIperboleIpnoticoIpotesiIppicaIrideIrlandaIronicoIrrigatoIrrorareIsolatoIsotopoIstericoIstitutoIstriceItaliaIterareLabbroLabirintoLaccaLaceratoLacrimaLacunaLaddoveLagoLampoLancettaLanternaLardosoLargaLaringeLastraLatenzaLatinoLattugaLavagnaLavoroLegaleLeggeroLemboLentezzaLenzaLeoneLepreLesivoLessatoLestoLetteraleLevaLevigatoLiberoLidoLievitoLillaLimaturaLimitareLimpidoLineareLinguaLiquidoLiraLiricaLiscaLiteLitigioLivreaLocandaLodeLogicaLombareLondraLongevoLoquaceLorenzoLotoLotteriaLuceLucidatoLumacaLuminosoLungoLupoLuppoloLusingaLussoLuttoMacabroMacchinaMaceroMacinatoMadamaMagicoMagliaMagneteMagroMaiolicaMalafedeMalgradoMalintesoMalsanoMaltoMalumoreManaManciaMandorlaMangiareManifestoMannaroManovraMansardaMantideManubrioMappaMaratonaMarcireMarettaMarmoMarsupioMascheraMassaiaMastinoMaterassoMatricolaMattoneMaturoMazurcaMeandroMeccanicoMecenateMedesimoMeditareMegaMelassaMelisMelodiaMeningeMenoMensolaMercurioMerendaMerloMeschinoMeseMessereMestoloMetalloMetodoMettereMiagolareMicaMicelioMicheleMicroboMidolloMieleMiglioreMilanoMiliteMimosaMineraleMiniMinoreMirinoMirtilloMiscelaMissivaMistoMisurareMitezzaMitigareMitraMittenteMnemonicoModelloModificaModuloMoganoMogioMoleMolossoMonasteroMoncoMondinaMonetarioMonileMonotonoMonsoneMontatoMonvisoMoraMordereMorsicatoMostroMotivatoMotosegaMottoMovenzaMovimentoMozzoMuccaMucosaMuffaMughettoMugnaioMulattoMulinelloMultiploMummiaMuntoMuovereMuraleMusaMuscoloMusicaMutevoleMutoNababboNaftaNanometroNarcisoNariceNarratoNascereNastrareNaturaleNauticaNaviglioNebulosaNecrosiNegativoNegozioNemmenoNeofitaNerettoNervoNessunoNettunoNeutraleNeveNevroticoNicchiaNinfaNitidoNobileNocivoNodoNomeNominaNordicoNormaleNorvegeseNostranoNotareNotiziaNotturnoNovellaNucleoNullaNumeroNuovoNutrireNuvolaNuzialeOasiObbedireObbligoObeliscoOblioOboloObsoletoOccasioneOcchioOccidenteOccorrereOccultareOcraOculatoOdiernoOdorareOffertaOffrireOffuscatoOggettoOggiOgnunoOlandeseOlfattoOliatoOlivaOlogrammaOltreOmaggioOmbelicoOmbraOmegaOmissioneOndosoOnereOniceOnnivoroOnorevoleOntaOperatoOpinioneOppostoOracoloOrafoOrdineOrecchinoOreficeOrfanoOrganicoOrigineOrizzonteOrmaOrmeggioOrnativoOrologioOrrendoOrribileOrtensiaOrticaOrzataOrzoOsareOscurareOsmosiOspedaleOspiteOssaOssidareOstacoloOsteOtiteOtreOttagonoOttimoOttobreOvaleOvestOvinoOviparoOvocitoOvunqueOvviareOzioPacchettoPacePacificoPadellaPadronePaesePagaPaginaPalazzinaPalesarePallidoPaloPaludePandoroPannelloPaoloPaonazzoPapricaParabolaParcellaParerePargoloPariParlatoParolaPartireParvenzaParzialePassivoPasticcaPataccaPatologiaPattumePavonePeccatoPedalarePedonalePeggioPelosoPenarePendicePenisolaPennutoPenombraPensarePentolaPepePepitaPerbenePercorsoPerdonatoPerforarePergamenaPeriodoPermessoPernoPerplessoPersuasoPertugioPervasoPesatorePesistaPesoPestiferoPetaloPettinePetulantePezzoPiacerePiantaPiattinoPiccinoPicozzaPiegaPietraPifferoPigiamaPigolioPigroPilaPiliferoPillolaPilotaPimpantePinetaPinnaPinoloPioggiaPiomboPiramidePireticoPiritePirolisiPitonePizzicoPlaceboPlanarePlasmaPlatanoPlenarioPochezzaPoderosoPodismoPoesiaPoggiarePolentaPoligonoPollicePolmonitePolpettaPolsoPoltronaPolverePomicePomodoroPontePopolosoPorfidoPorosoPorporaPorrePortataPosaPositivoPossessoPostulatoPotassioPoterePranzoPrassiPraticaPreclusoPredicaPrefissoPregiatoPrelievoPremerePrenotarePreparatoPresenzaPretestoPrevalsoPrimaPrincipePrivatoProblemaProcuraProdurreProfumoProgettoProlungaPromessaPronomePropostaProrogaProtesoProvaPrudentePrugnaPruritoPsichePubblicoPudicaPugilatoPugnoPulcePulitoPulsantePuntarePupazzoPupillaPuroQuadroQualcosaQuasiQuerelaQuotaRaccoltoRaddoppioRadicaleRadunatoRafficaRagazzoRagioneRagnoRamarroRamingoRamoRandagioRantolareRapatoRapinaRappresoRasaturaRaschiatoRasenteRassegnaRastrelloRataRavvedutoRealeRecepireRecintoReclutaReconditoRecuperoRedditoRedimereRegalatoRegistroRegolaRegressoRelazioneRemareRemotoRennaReplicaReprimereReputareResaResidenteResponsoRestauroReteRetinaRetoricaRettificaRevocatoRiassuntoRibadireRibelleRibrezzoRicaricaRiccoRicevereRiciclatoRicordoRicredutoRidicoloRidurreRifasareRiflessoRiformaRifugioRigareRigettatoRighelloRilassatoRilevatoRimanereRimbalzoRimedioRimorchioRinascitaRincaroRinforzoRinnovoRinomatoRinsavitoRintoccoRinunciaRinvenireRiparatoRipetutoRipienoRiportareRipresaRipulireRisataRischioRiservaRisibileRisoRispettoRistoroRisultatoRisvoltoRitardoRitegnoRitmicoRitrovoRiunioneRivaRiversoRivincitaRivoltoRizomaRobaRoboticoRobustoRocciaRocoRodaggioRodereRoditoreRogitoRollioRomanticoRompereRonzioRosolareRospoRotanteRotondoRotulaRovescioRubizzoRubricaRugaRullinoRumineRumorosoRuoloRupeRussareRusticoSabatoSabbiareSabotatoSagomaSalassoSaldaturaSalgemmaSalivareSalmoneSaloneSaltareSalutoSalvoSapereSapidoSaporitoSaracenoSarcasmoSartoSassosoSatelliteSatiraSatolloSaturnoSavanaSavioSaziatoSbadiglioSbalzoSbancatoSbarraSbattereSbavareSbendareSbirciareSbloccatoSbocciatoSbrinareSbruffoneSbuffareScabrosoScadenzaScalaScambiareScandaloScapolaScarsoScatenareScavatoSceltoScenicoScettroSchedaSchienaSciarpaScienzaScindereScippoSciroppoScivoloSclerareScodellaScolpitoScompartoSconfortoScoprireScortaScossoneScozzeseScribaScrollareScrutinioScuderiaScultoreScuolaScuroScusareSdebitareSdoganareSeccaturaSecondoSedanoSeggiolaSegnalatoSegregatoSeguitoSelciatoSelettivoSellaSelvaggioSemaforoSembrareSemeSeminatoSempreSensoSentireSepoltoSequenzaSerataSerbatoSerenoSerioSerpenteSerraglioServireSestinaSetolaSettimanaSfaceloSfaldareSfamatoSfarzosoSfaticatoSferaSfidaSfilatoSfingeSfocatoSfoderareSfogoSfoltireSforzatoSfrattoSfruttatoSfuggitoSfumareSfusoSgabelloSgarbatoSgonfiareSgorbioSgrassatoSguardoSibiloSiccomeSierraSiglaSignoreSilenzioSillabaSimboloSimpaticoSimulatoSinfoniaSingoloSinistroSinoSintesiSinusoideSiparioSismaSistoleSituatoSlittaSlogaturaSlovenoSmarritoSmemoratoSmentitoSmeraldoSmilzoSmontareSmottatoSmussatoSnellireSnervatoSnodoSobbalzoSobrioSoccorsoSocialeSodaleSoffittoSognoSoldatoSolenneSolidoSollazzoSoloSolubileSolventeSomaticoSommaSondaSonettoSonniferoSopireSoppesoSopraSorgereSorpassoSorrisoSorsoSorteggioSorvolatoSospiroSostaSottileSpadaSpallaSpargereSpatolaSpaventoSpazzolaSpecieSpedireSpegnereSpelaturaSperanzaSpessoreSpettraleSpezzatoSpiaSpigolosoSpillatoSpinosoSpiraleSplendidoSportivoSposoSprangaSprecareSpronatoSpruzzoSpuntinoSquilloSradicareSrotolatoStabileStaccoStaffaStagnareStampatoStantioStarnutoStaseraStatutoSteloSteppaSterzoStilettoStimaStirpeStivaleStizzosoStonatoStoricoStrappoStregatoStriduloStrozzareStruttoStuccareStufoStupendoSubentroSuccosoSudoreSuggeritoSugoSultanoSuonareSuperboSupportoSurgelatoSurrogatoSussurroSuturaSvagareSvedeseSveglioSvelareSvenutoSveziaSviluppoSvistaSvizzeraSvoltaSvuotareTabaccoTabulatoTacciareTaciturnoTaleTalismanoTamponeTanninoTaraTardivoTargatoTariffaTarpareTartarugaTastoTatticoTavernaTavolataTazzaTecaTecnicoTelefonoTemerarioTempoTemutoTendoneTeneroTensioneTentacoloTeoremaTermeTerrazzoTerzettoTesiTesseratoTestatoTetroTettoiaTifareTigellaTimbroTintoTipicoTipografoTiraggioTiroTitanioTitoloTitubanteTizioTizzoneToccareTollerareToltoTombolaTomoTonfoTonsillaTopazioTopologiaToppaTorbaTornareTorroneTortoraToscanoTossireTostaturaTotanoTraboccoTracheaTrafilaTragediaTralcioTramontoTransitoTrapanoTrarreTraslocoTrattatoTraveTrecciaTremolioTrespoloTributoTrichecoTrifoglioTrilloTrinceaTrioTristezzaTrituratoTrivellaTrombaTronoTroppoTrottolaTrovareTruccatoTubaturaTuffatoTulipanoTumultoTunisiaTurbareTurchinoTutaTutelaUbicatoUccelloUccisoreUdireUditivoUffaUfficioUgualeUlisseUltimatoUmanoUmileUmorismoUncinettoUngereUnghereseUnicornoUnificatoUnisonoUnitarioUnteUovoUpupaUraganoUrgenzaUrloUsanzaUsatoUscitoUsignoloUsuraioUtensileUtilizzoUtopiaVacanteVaccinatoVagabondoVagliatoValangaValgoValicoVallettaValorosoValutareValvolaVampataVangareVanitosoVanoVantaggioVanveraVaporeVaranoVarcatoVarianteVascaVedettaVedovaVedutoVegetaleVeicoloVelcroVelinaVellutoVeloceVenatoVendemmiaVentoVeraceVerbaleVergognaVerificaVeroVerrucaVerticaleVescicaVessilloVestaleVeteranoVetrinaVetustoViandanteVibranteVicendaVichingoVicinanzaVidimareVigiliaVignetoVigoreVileVillanoViminiVincitoreViolaViperaVirgolaVirologoVirulentoViscosoVisioneVispoVissutoVisuraVitaVitelloVittimaVivandaVividoViziareVoceVogaVolatileVolereVolpeVoragineVulcanoZampognaZannaZappatoZatteraZavorraZefiroZelanteZeloZenzeroZerbinoZibettoZincoZirconeZittoZollaZoticoZuccheroZufoloZuluZuppa\";\nlet wordlist = null;\nfunction loadWords(lang) {\n if (wordlist != null) {\n return;\n }\n wordlist = words.replace(/([A-Z])/g, \" $1\").toLowerCase().substring(1).split(\" \");\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}\nclass LangIt extends Wordlist {\n constructor() {\n super(\"it\");\n }\n getWord(index) {\n loadWords(this);\n return wordlist[index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist.indexOf(word);\n }\n}\nconst langIt = new LangIt();\nWordlist.register(langIt);\nexport { langIt };\n//# sourceMappingURL=lang-it.js.map","\"use strict\";\nimport { toUtf8String } from \"@ethersproject/strings\";\nimport { Wordlist } from \"./wordlist\";\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?\";\nfunction loadWords(lang) {\n if (wordlist[lang.locale] !== null) {\n return;\n }\n wordlist[lang.locale] = [];\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 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 wordlist[lang.locale].push(toUtf8String(bytes));\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}\nclass LangZh extends Wordlist {\n constructor(country) {\n super(\"zh_\" + country);\n }\n getWord(index) {\n loadWords(this);\n return wordlist[this.locale][index];\n }\n getWordIndex(word) {\n loadWords(this);\n return wordlist[this.locale].indexOf(word);\n }\n split(mnemonic) {\n mnemonic = mnemonic.replace(/(?:\\u3000| )+/g, \"\");\n return mnemonic.split(\"\");\n }\n}\nconst langZhCn = new LangZh(\"cn\");\nWordlist.register(langZhCn);\nWordlist.register(langZhCn, \"zh\");\nconst langZhTw = new LangZh(\"tw\");\nWordlist.register(langZhTw);\nexport { langZhCn, langZhTw };\n//# sourceMappingURL=lang-zh.js.map","import { 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\";\nexport const wordlists = {\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//# sourceMappingURL=wordlists.js.map","export const version = \"hdnode/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { arrayify, 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 { wordlists } from \"@ethersproject/wordlists\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst N = BigNumber.from(\"0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141\");\n// \"Bitcoin seed\"\nconst MasterSecret = toUtf8Bytes(\"Bitcoin seed\");\nconst HardenedBit = 0x80000000;\n// Returns a byte with the MSB bits set\nfunction getUpperMask(bits) {\n return ((1 << bits) - 1) << (8 - bits);\n}\n// Returns a byte with the LSB bits set\nfunction getLowerMask(bits) {\n return (1 << bits) - 1;\n}\nfunction bytes32(value) {\n return hexZeroPad(hexlify(value), 32);\n}\nfunction base58check(data) {\n return Base58.encode(concat([data, hexDataSlice(sha256(sha256(data)), 0, 4)]));\n}\nfunction getWordlist(wordlist) {\n if (wordlist == null) {\n return wordlists[\"en\"];\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 return wordlist;\n}\nconst _constructorGuard = {};\nexport const defaultPath = \"m/44'/60'/0'/0/0\";\n;\nexport class HDNode {\n /**\n * This constructor should not be called directly.\n *\n * Please use:\n * - fromMnemonic\n * - fromSeed\n */\n constructor(constructorGuard, privateKey, publicKey, parentFingerprint, chainCode, index, depth, mnemonicOrPath) {\n logger.checkNew(new.target, HDNode);\n /* istanbul ignore if */\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"HDNode constructor cannot be called directly\");\n }\n if (privateKey) {\n const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"privateKey\", signingKey.privateKey);\n defineReadOnly(this, \"publicKey\", signingKey.compressedPublicKey);\n }\n else {\n defineReadOnly(this, \"privateKey\", null);\n defineReadOnly(this, \"publicKey\", hexlify(publicKey));\n }\n defineReadOnly(this, \"parentFingerprint\", parentFingerprint);\n defineReadOnly(this, \"fingerprint\", hexDataSlice(ripemd160(sha256(this.publicKey)), 0, 4));\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n defineReadOnly(this, \"chainCode\", chainCode);\n defineReadOnly(this, \"index\", index);\n defineReadOnly(this, \"depth\", depth);\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 get extendedKey() {\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 if (this.depth >= 256) {\n 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 neuter() {\n return new HDNode(_constructorGuard, null, this.publicKey, this.parentFingerprint, this.chainCode, this.index, this.depth, this.path);\n }\n _derive(index) {\n if (index > 0xffffffff) {\n throw new Error(\"invalid index - \" + String(index));\n }\n // Base path\n let path = this.path;\n if (path) {\n path += \"/\" + (index & ~HardenedBit);\n }\n const data = new Uint8Array(37);\n if (index & HardenedBit) {\n if (!this.privateKey) {\n throw new Error(\"cannot derive child of neutered node\");\n }\n // Data = 0x00 || ser_256(k_par)\n data.set(arrayify(this.privateKey), 1);\n // Hardened path\n if (path) {\n path += \"'\";\n }\n }\n else {\n // Data = ser_p(point(k_par))\n data.set(arrayify(this.publicKey));\n }\n // Data += ser_32(i)\n for (let i = 24; i >= 0; i -= 8) {\n 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 // The private key\n let ki = null;\n // The public key\n let Ki = null;\n if (this.privateKey) {\n ki = bytes32(BigNumber.from(IL).add(this.privateKey).mod(N));\n }\n else {\n const ek = new SigningKey(hexlify(IL));\n Ki = ek._addPoint(this.publicKey);\n }\n let mnemonicOrPath = path;\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 return new HDNode(_constructorGuard, ki, Ki, this.fingerprint, bytes32(IR), index, this.depth + 1, mnemonicOrPath);\n }\n derivePath(path) {\n const components = path.split(\"/\");\n if (components.length === 0 || (components[0] === \"m\" && this.depth !== 0)) {\n throw new Error(\"invalid path - \" + path);\n }\n if (components[0] === \"m\") {\n components.shift();\n }\n let result = 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) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result._derive(HardenedBit + index);\n }\n else if (component.match(/^[0-9]+$/)) {\n const index = parseInt(component);\n if (index >= HardenedBit) {\n throw new Error(\"invalid path index - \" + component);\n }\n result = result._derive(index);\n }\n else {\n throw new Error(\"invalid path component - \" + component);\n }\n }\n return result;\n }\n static _fromSeed(seed, mnemonic) {\n const seedArray = arrayify(seed);\n if (seedArray.length < 16 || seedArray.length > 64) {\n throw new Error(\"invalid seed\");\n }\n const I = arrayify(computeHmac(SupportedAlgorithm.sha512, MasterSecret, seedArray));\n return new HDNode(_constructorGuard, bytes32(I.slice(0, 32)), null, \"0x00000000\", bytes32(I.slice(32)), 0, 0, mnemonic);\n }\n static fromMnemonic(mnemonic, password, wordlist) {\n // If a locale name was passed in, find the associated wordlist\n wordlist = getWordlist(wordlist);\n // Normalize the case and spacing in the mnemonic (throws if the mnemonic is invalid)\n mnemonic = entropyToMnemonic(mnemonicToEntropy(mnemonic, wordlist), wordlist);\n return HDNode._fromSeed(mnemonicToSeed(mnemonic, password), {\n phrase: mnemonic,\n path: \"m\",\n locale: wordlist.locale\n });\n }\n static fromSeed(seed) {\n return HDNode._fromSeed(seed, null);\n }\n static fromExtendedKey(extendedKey) {\n const bytes = Base58.decode(extendedKey);\n if (bytes.length !== 82 || base58check(bytes.slice(0, 78)) !== extendedKey) {\n logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\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 switch (hexlify(bytes.slice(0, 4))) {\n // Public Key\n case \"0x0488b21e\":\n case \"0x043587cf\":\n return new HDNode(_constructorGuard, null, hexlify(key), parentFingerprint, chainCode, index, depth, null);\n // Private Key\n case \"0x0488ade4\":\n case \"0x04358394 \":\n if (key[0] !== 0) {\n break;\n }\n return new HDNode(_constructorGuard, hexlify(key.slice(1)), null, parentFingerprint, chainCode, index, depth, null);\n }\n return logger.throwArgumentError(\"invalid extended key\", \"extendedKey\", \"[REDACTED]\");\n }\n}\nexport function mnemonicToSeed(mnemonic, password) {\n if (!password) {\n password = \"\";\n }\n const salt = toUtf8Bytes(\"mnemonic\" + password, UnicodeNormalizationForm.NFKD);\n return pbkdf2(toUtf8Bytes(mnemonic, UnicodeNormalizationForm.NFKD), salt, 2048, 64, \"sha512\");\n}\nexport function mnemonicToEntropy(mnemonic, wordlist) {\n wordlist = getWordlist(wordlist);\n logger.checkNormalize();\n const words = wordlist.split(mnemonic);\n if ((words.length % 3) !== 0) {\n throw new Error(\"invalid mnemonic\");\n }\n const entropy = arrayify(new Uint8Array(Math.ceil(11 * words.length / 8)));\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) {\n 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 const entropyBits = 32 * words.length / 3;\n const checksumBits = words.length / 3;\n const checksumMask = getUpperMask(checksumBits);\n const checksum = arrayify(sha256(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;\n if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {\n throw new Error(\"invalid checksum\");\n }\n return hexlify(entropy.slice(0, entropyBits / 8));\n}\nexport function entropyToMnemonic(entropy, wordlist) {\n wordlist = getWordlist(wordlist);\n entropy = arrayify(entropy);\n if ((entropy.length % 4) !== 0 || entropy.length < 16 || entropy.length > 32) {\n throw new Error(\"invalid entropy\");\n }\n const indices = [0];\n let remainingBits = 11;\n for (let i = 0; i < entropy.length; i++) {\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 remainingBits -= 8;\n // This byte will complete an 11-bit index\n }\n else {\n indices[indices.length - 1] <<= remainingBits;\n indices[indices.length - 1] |= entropy[i] >> (8 - remainingBits);\n // Start the next word\n indices.push(entropy[i] & getLowerMask(8 - remainingBits));\n remainingBits += 3;\n }\n }\n // Compute the checksum bits\n const checksumBits = entropy.length / 4;\n const checksum = arrayify(sha256(entropy))[0] & getUpperMask(checksumBits);\n // Shift the checksum into the word indices\n indices[indices.length - 1] <<= checksumBits;\n indices[indices.length - 1] |= (checksum >> (8 - checksumBits));\n return wordlist.join(indices.map((index) => wordlist.getWord(index)));\n}\nexport function isValidMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n return true;\n }\n catch (error) { }\n return false;\n}\nexport function getAccountPath(index) {\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//# sourceMappingURL=index.js.map","\"use strict\";\nimport { arrayify, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, UnicodeNormalizationForm } from '@ethersproject/strings';\nexport function looseArrayify(hexString) {\n if (typeof (hexString) === 'string' && hexString.substring(0, 2) !== '0x') {\n hexString = '0x' + hexString;\n }\n return arrayify(hexString);\n}\nexport function zpad(value, length) {\n value = String(value);\n while (value.length < length) {\n value = '0' + value;\n }\n return value;\n}\nexport function getPassword(password) {\n if (typeof (password) === 'string') {\n return toUtf8Bytes(password, UnicodeNormalizationForm.NFKC);\n }\n return arrayify(password);\n}\nexport function searchPath(object, path) {\n let currentChild = object;\n const comps = path.toLowerCase().split('/');\n for (let i = 0; i < comps.length; i++) {\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 // Didn't find one. :'(\n if (matchingChild === null) {\n return null;\n }\n // Now check this child...\n currentChild = matchingChild;\n }\n return currentChild;\n}\n// See: https://www.ietf.org/rfc/rfc4122.txt (Section 4.4)\nexport function uuidV4(randomBytes) {\n const bytes = arrayify(randomBytes);\n // Section: 4.1.3:\n // - time_hi_and_version[12:16] = 0b0100\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\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 const value = hexlify(bytes);\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//# sourceMappingURL=utils.js.map","export const version = \"json-wallets/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport aes from \"aes-js\";\nimport scrypt from \"scrypt-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { defaultPath, entropyToMnemonic, HDNode, 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\";\nimport { getPassword, looseArrayify, searchPath, uuidV4, zpad } from \"./utils\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Exported Types\nfunction hasMnemonic(value) {\n return (value != null && value.mnemonic && value.mnemonic.phrase);\n}\nexport class KeystoreAccount extends Description {\n isKeystoreAccount(value) {\n return !!(value && value._isKeystoreAccount);\n }\n}\nfunction _decrypt(data, key, ciphertext) {\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 const aesCtr = new aes.ModeOfOperation.ctr(key, counter);\n return arrayify(aesCtr.decrypt(ciphertext));\n }\n return null;\n}\nfunction _getAccount(data, key) {\n const ciphertext = looseArrayify(searchPath(data, \"crypto/ciphertext\"));\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 const privateKey = _decrypt(data, key.slice(0, 16), ciphertext);\n if (!privateKey) {\n logger.throwError(\"unsupported cipher\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"decrypt\"\n });\n }\n const mnemonicKey = key.slice(32, 64);\n const address = computeAddress(privateKey);\n if (data.address) {\n let check = data.address.toLowerCase();\n if (check.substring(0, 2) !== \"0x\") {\n check = \"0x\" + check;\n }\n if (getAddress(check) !== address) {\n throw new Error(\"address mismatch\");\n }\n }\n const account = {\n _isKeystoreAccount: true,\n address: address,\n privateKey: hexlify(privateKey)\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 const mnemonicCounter = new aes.Counter(mnemonicIv);\n const mnemonicAesCtr = new aes.ModeOfOperation.ctr(mnemonicKey, mnemonicCounter);\n const path = searchPath(data, \"x-ethers/path\") || defaultPath;\n const locale = searchPath(data, \"x-ethers/locale\") || \"en\";\n const entropy = arrayify(mnemonicAesCtr.decrypt(mnemonicCiphertext));\n try {\n const mnemonic = entropyToMnemonic(entropy, locale);\n const node = HDNode.fromMnemonic(mnemonic, null, locale).derivePath(path);\n if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\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 return new KeystoreAccount(account);\n}\nfunction pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc) {\n return arrayify(_pbkdf2(passwordBytes, salt, count, dkLen, prfFunc));\n}\nfunction pbkdf2(passwordBytes, salt, count, dkLen, prfFunc) {\n return Promise.resolve(pbkdf2Sync(passwordBytes, salt, count, dkLen, prfFunc));\n}\nfunction _computeKdfKey(data, password, pbkdf2Func, scryptFunc, progressCallback) {\n const passwordBytes = getPassword(password);\n const kdf = searchPath(data, \"crypto/kdf\");\n if (kdf && typeof (kdf) === \"string\") {\n const throwError = function (name, value) {\n return logger.throwArgumentError(\"invalid key-derivation function parameters\", name, value);\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 // Check for all required parameters\n if (!N || !r || !p) {\n throwError(\"kdf\", kdf);\n }\n // Make sure N is a power of 2\n if ((N & (N - 1)) !== 0) {\n throwError(\"N\", N);\n }\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return scryptFunc(passwordBytes, salt, N, r, p, 64, progressCallback);\n }\n else if (kdf.toLowerCase() === \"pbkdf2\") {\n const salt = looseArrayify(searchPath(data, \"crypto/kdfparams/salt\"));\n let prfFunc = null;\n const prf = searchPath(data, \"crypto/kdfparams/prf\");\n if (prf === \"hmac-sha256\") {\n prfFunc = \"sha256\";\n }\n else if (prf === \"hmac-sha512\") {\n prfFunc = \"sha512\";\n }\n else {\n throwError(\"prf\", prf);\n }\n const count = parseInt(searchPath(data, \"crypto/kdfparams/c\"));\n const dkLen = parseInt(searchPath(data, \"crypto/kdfparams/dklen\"));\n if (dkLen !== 32) {\n throwError(\"dklen\", dkLen);\n }\n return pbkdf2Func(passwordBytes, salt, count, dkLen, prfFunc);\n }\n }\n return logger.throwArgumentError(\"unsupported key-derivation function\", \"kdf\", kdf);\n}\nexport function decryptSync(json, password) {\n const data = JSON.parse(json);\n const key = _computeKdfKey(data, password, pbkdf2Sync, scrypt.syncScrypt);\n return _getAccount(data, key);\n}\nexport function decrypt(json, password, progressCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.parse(json);\n const key = yield _computeKdfKey(data, password, pbkdf2, scrypt.scrypt, progressCallback);\n return _getAccount(data, key);\n });\n}\nexport function encrypt(account, password, options, progressCallback) {\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 // 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 if (node.privateKey != account.privateKey) {\n throw new Error(\"mnemonic mismatch\");\n }\n }\n }\n catch (e) {\n return Promise.reject(e);\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) {\n options = {};\n }\n const privateKey = arrayify(account.privateKey);\n const passwordBytes = getPassword(password);\n let entropy = null;\n let path = null;\n let locale = 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 let client = options.client;\n if (!client) {\n client = \"ethers.js\";\n }\n // Check/generate the salt\n let salt = null;\n if (options.salt) {\n salt = arrayify(options.salt);\n }\n else {\n salt = randomBytes(32);\n ;\n }\n // Override initialization vector\n let iv = null;\n if (options.iv) {\n iv = arrayify(options.iv);\n if (iv.length !== 16) {\n throw new Error(\"invalid iv\");\n }\n }\n else {\n iv = randomBytes(16);\n }\n // Override the uuid\n let uuidRandom = null;\n if (options.uuid) {\n uuidRandom = arrayify(options.uuid);\n if (uuidRandom.length !== 16) {\n throw new Error(\"invalid uuid\");\n }\n }\n else {\n uuidRandom = randomBytes(16);\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 N = options.scrypt.N;\n }\n if (options.scrypt.r) {\n r = options.scrypt.r;\n }\n if (options.scrypt.p) {\n 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 // 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 // This will be used to encrypt the mnemonic phrase (if any)\n const mnemonicKey = key.slice(32, 64);\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 // Compute the message authentication code, used to check the password\n const mac = keccak256(concat([macPrefix, ciphertext]));\n // See: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition\n const data = {\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 // 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 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 return JSON.stringify(data);\n });\n}\n//# sourceMappingURL=keystore.js.map","\"use strict\";\nimport aes from \"aes-js\";\nimport { getAddress } from \"@ethersproject/address\";\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { pbkdf2 } from \"@ethersproject/pbkdf2\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { Description } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { getPassword, looseArrayify, searchPath } from \"./utils\";\nexport class CrowdsaleAccount extends Description {\n isCrowdsaleAccount(value) {\n return !!(value && value._isCrowdsaleAccount);\n }\n}\n// See: https://github.com/ethereum/pyethsaletool\nexport function decrypt(json, password) {\n const data = JSON.parse(json);\n password = getPassword(password);\n // Ethereum Address\n const ethaddr = getAddress(searchPath(data, \"ethaddr\"));\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 const key = arrayify(pbkdf2(password, password, 2000, 32, \"sha256\")).slice(0, 16);\n const iv = encseed.slice(0, 16);\n const encryptedSeed = encseed.slice(16);\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 // 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 const seedHexBytes = toUtf8Bytes(seedHex);\n const privateKey = keccak256(seedHexBytes);\n return new CrowdsaleAccount({\n _isCrowdsaleAccount: true,\n address: ethaddr,\n privateKey: privateKey\n });\n}\n//# sourceMappingURL=crowdsale.js.map","\"use strict\";\nimport { getAddress } from \"@ethersproject/address\";\nexport function isCrowdsaleWallet(json) {\n let data = null;\n try {\n data = JSON.parse(json);\n }\n catch (error) {\n return false;\n }\n return (data.encseed && data.ethaddr);\n}\nexport function isKeystoreWallet(json) {\n let data = null;\n try {\n data = JSON.parse(json);\n }\n catch (error) {\n return false;\n }\n if (!data.version || parseInt(data.version) !== data.version || parseInt(data.version) !== 3) {\n return false;\n }\n // @TODO: Put more checks to make sure it has kdf, iv and all that good stuff\n return true;\n}\n//export function isJsonWallet(json: string): boolean {\n// return (isSecretStorageWallet(json) || isCrowdsaleWallet(json));\n//}\nexport function getJsonWalletAddress(json) {\n if (isCrowdsaleWallet(json)) {\n try {\n return getAddress(JSON.parse(json).ethaddr);\n }\n catch (error) {\n return null;\n }\n }\n if (isKeystoreWallet(json)) {\n try {\n return getAddress(JSON.parse(json).address);\n }\n catch (error) {\n return null;\n }\n }\n return null;\n}\n//# sourceMappingURL=inspect.js.map","\"use strict\";\nimport { decrypt as decryptCrowdsale } from \"./crowdsale\";\nimport { getJsonWalletAddress, isCrowdsaleWallet, isKeystoreWallet } from \"./inspect\";\nimport { decrypt as decryptKeystore, decryptSync as decryptKeystoreSync, encrypt as encryptKeystore } from \"./keystore\";\nfunction decryptJsonWallet(json, password, progressCallback) {\n if (isCrowdsaleWallet(json)) {\n if (progressCallback) {\n progressCallback(0);\n }\n const account = decryptCrowdsale(json, password);\n if (progressCallback) {\n progressCallback(1);\n }\n return Promise.resolve(account);\n }\n if (isKeystoreWallet(json)) {\n return decryptKeystore(json, password, progressCallback);\n }\n return Promise.reject(new Error(\"invalid JSON wallet\"));\n}\nfunction decryptJsonWalletSync(json, password) {\n if (isCrowdsaleWallet(json)) {\n return decryptCrowdsale(json, password);\n }\n if (isKeystoreWallet(json)) {\n return decryptKeystoreSync(json, password);\n }\n throw new Error(\"invalid JSON wallet\");\n}\nexport { decryptCrowdsale, decryptKeystore, decryptKeystoreSync, encryptKeystore, isCrowdsaleWallet, isKeystoreWallet, getJsonWalletAddress, decryptJsonWallet, decryptJsonWalletSync, };\n//# sourceMappingURL=index.js.map","export const version = \"wallet/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAddress } from \"@ethersproject/address\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { Signer } from \"@ethersproject/abstract-signer\";\nimport { arrayify, concat, hexDataSlice, isHexString, joinSignature } from \"@ethersproject/bytes\";\nimport { hashMessage, _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { defaultPath, HDNode, entropyToMnemonic } 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 } from \"@ethersproject/json-wallets\";\nimport { computeAddress, recoverAddress, serialize } from \"@ethersproject/transactions\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction isAccount(value) {\n return (value != null && isHexString(value.privateKey, 32) && value.address != null);\n}\nfunction hasMnemonic(value) {\n const mnemonic = value.mnemonic;\n return (mnemonic && mnemonic.phrase);\n}\nexport class Wallet extends Signer {\n constructor(privateKey, provider) {\n logger.checkNew(new.target, Wallet);\n super();\n if (isAccount(privateKey)) {\n const signingKey = new SigningKey(privateKey.privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n if (this.address !== getAddress(privateKey.address)) {\n logger.throwArgumentError(\"privateKey/address mismatch\", \"privateKey\", \"[REDACTED]\");\n }\n if (hasMnemonic(privateKey)) {\n const srcMnemonic = privateKey.mnemonic;\n defineReadOnly(this, \"_mnemonic\", () => ({\n phrase: srcMnemonic.phrase,\n path: srcMnemonic.path || defaultPath,\n locale: srcMnemonic.locale || \"en\"\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 }\n else {\n defineReadOnly(this, \"_mnemonic\", () => null);\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\", () => 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 const signingKey = new SigningKey(privateKey);\n defineReadOnly(this, \"_signingKey\", () => signingKey);\n }\n defineReadOnly(this, \"_mnemonic\", () => null);\n defineReadOnly(this, \"address\", computeAddress(this.publicKey));\n }\n /* istanbul ignore if */\n if (provider && !Provider.isProvider(provider)) {\n logger.throwArgumentError(\"invalid provider\", \"provider\", provider);\n }\n defineReadOnly(this, \"provider\", provider || null);\n }\n get mnemonic() { return this._mnemonic(); }\n get privateKey() { return this._signingKey().privateKey; }\n get publicKey() { return this._signingKey().publicKey; }\n getAddress() {\n return Promise.resolve(this.address);\n }\n connect(provider) {\n return new Wallet(this, provider);\n }\n signTransaction(transaction) {\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 const signature = this._signingKey().signDigest(keccak256(serialize(tx)));\n return serialize(tx, signature);\n });\n }\n signMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return joinSignature(this._signingKey().signDigest(hashMessage(message)));\n });\n }\n _signTypedData(domain, types, value) {\n return __awaiter(this, void 0, void 0, function* () {\n // Populate any ENS names\n const populated = yield _TypedDataEncoder.resolveNames(domain, types, value, (name) => {\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 return joinSignature(this._signingKey().signDigest(_TypedDataEncoder.hash(populated.domain, types, populated.value)));\n });\n }\n encrypt(password, options, progressCallback) {\n if (typeof (options) === \"function\" && !progressCallback) {\n progressCallback = options;\n options = {};\n }\n if (progressCallback && typeof (progressCallback) !== \"function\") {\n throw new Error(\"invalid callback\");\n }\n if (!options) {\n options = {};\n }\n return encryptKeystore(this, password, options, progressCallback);\n }\n /**\n * Static methods to create Wallet instances.\n */\n static createRandom(options) {\n let entropy = randomBytes(16);\n if (!options) {\n options = {};\n }\n if (options.extraEntropy) {\n entropy = arrayify(hexDataSlice(keccak256(concat([entropy, options.extraEntropy])), 0, 16));\n }\n const mnemonic = entropyToMnemonic(entropy, options.locale);\n return Wallet.fromMnemonic(mnemonic, options.path, options.locale);\n }\n static fromEncryptedJson(json, password, progressCallback) {\n return decryptJsonWallet(json, password, progressCallback).then((account) => {\n return new Wallet(account);\n });\n }\n static fromEncryptedJsonSync(json, password) {\n return new Wallet(decryptJsonWalletSync(json, password));\n }\n static fromMnemonic(mnemonic, path, wordlist) {\n if (!path) {\n path = defaultPath;\n }\n return new Wallet(HDNode.fromMnemonic(mnemonic, null, wordlist).derivePath(path));\n }\n}\nexport function verifyMessage(message, signature) {\n return recoverAddress(hashMessage(message), signature);\n}\nexport function verifyTypedData(domain, types, value, signature) {\n return recoverAddress(_TypedDataEncoder.hash(domain, types, value), signature);\n}\n//# sourceMappingURL=index.js.map","export const AddressZero = \"0x0000000000000000000000000000000000000000\";\n//# sourceMappingURL=addresses.js.map","export const HashZero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n//# sourceMappingURL=hashes.js.map","// NFKC (composed) // (decomposed)\nexport const EtherSymbol = \"\\u039e\"; // \"\\uD835\\uDF63\";\n//# sourceMappingURL=strings.js.map","export const version = \"networks/5.4.2\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n;\nfunction isRenetworkable(value) {\n return (value && typeof (value.renetwork) === \"function\");\n}\nfunction ethDefaultProvider(network) {\n const func = function (providers, options) {\n if (options == null) {\n options = {};\n }\n const providerList = [];\n if (providers.InfuraProvider) {\n try {\n providerList.push(new providers.InfuraProvider(network, options.infura));\n }\n catch (error) { }\n }\n if (providers.EtherscanProvider) {\n try {\n providerList.push(new providers.EtherscanProvider(network, options.etherscan));\n }\n catch (error) { }\n }\n if (providers.AlchemyProvider) {\n try {\n providerList.push(new providers.AlchemyProvider(network, options.alchemy));\n }\n catch (error) { }\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 }\n catch (error) { }\n }\n if (providers.CloudflareProvider) {\n try {\n providerList.push(new providers.CloudflareProvider(network));\n }\n catch (error) { }\n }\n if (providerList.length === 0) {\n return null;\n }\n if (providers.FallbackProvider) {\n let quorum = 1;\n if (options.quorum != null) {\n quorum = options.quorum;\n }\n else if (network === \"homestead\") {\n quorum = 2;\n }\n return new providers.FallbackProvider(providerList, quorum);\n }\n return providerList[0];\n };\n func.renetwork = function (network) {\n return ethDefaultProvider(network);\n };\n return func;\n}\nfunction etcDefaultProvider(url, network) {\n const func = function (providers, options) {\n if (providers.JsonRpcProvider) {\n return new providers.JsonRpcProvider(url, network);\n }\n return null;\n };\n func.renetwork = function (network) {\n return etcDefaultProvider(url, network);\n };\n return func;\n}\nconst homestead = {\n chainId: 1,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"homestead\",\n _defaultProvider: ethDefaultProvider(\"homestead\")\n};\nconst ropsten = {\n chainId: 3,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"ropsten\",\n _defaultProvider: ethDefaultProvider(\"ropsten\")\n};\nconst classicMordor = {\n chainId: 63,\n name: \"classicMordor\",\n _defaultProvider: etcDefaultProvider(\"https://www.ethercluster.com/mordor\", \"classicMordor\")\n};\nconst networks = {\n unspecified: { chainId: 0, name: \"unspecified\" },\n homestead: homestead,\n mainnet: homestead,\n morden: { chainId: 2, name: \"morden\" },\n ropsten: ropsten,\n testnet: ropsten,\n rinkeby: {\n chainId: 4,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"rinkeby\",\n _defaultProvider: ethDefaultProvider(\"rinkeby\")\n },\n kovan: {\n chainId: 42,\n name: \"kovan\",\n _defaultProvider: ethDefaultProvider(\"kovan\")\n },\n goerli: {\n chainId: 5,\n ensAddress: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\",\n name: \"goerli\",\n _defaultProvider: ethDefaultProvider(\"goerli\")\n },\n // ETC (See: #351)\n classic: {\n chainId: 61,\n name: \"classic\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/etc\", \"classic\")\n },\n classicMorden: { chainId: 62, name: \"classicMorden\" },\n classicMordor: classicMordor,\n classicTestnet: classicMordor,\n classicKotti: {\n chainId: 6,\n name: \"classicKotti\",\n _defaultProvider: etcDefaultProvider(\"https:/\\/www.ethercluster.com/kotti\", \"classicKotti\")\n },\n xdai: { chainId: 100, name: \"xdai\" },\n matic: { chainId: 137, name: \"matic\" },\n maticmum: { chainId: 80001, name: \"maticmum\" },\n bnb: { chainId: 56, name: \"bnb\" },\n bnbt: { chainId: 97, name: \"bnbt\" },\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) {\n // No network (null)\n if (network == null) {\n 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 return {\n chainId: network,\n name: \"unknown\"\n };\n }\n if (typeof (network) === \"string\") {\n const standard = networks[network];\n if (standard == null) {\n return null;\n }\n return {\n name: standard.name,\n chainId: standard.chainId,\n ensAddress: standard.ensAddress,\n _defaultProvider: (standard._defaultProvider || null)\n };\n }\n const standard = networks[network.name];\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 // 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 // @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 = network._defaultProvider || null;\n if (defaultProvider == null && standard._defaultProvider) {\n if (isRenetworkable(standard._defaultProvider)) {\n defaultProvider = standard._defaultProvider.renetwork(network);\n }\n else {\n defaultProvider = standard._defaultProvider;\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//# sourceMappingURL=index.js.map","\"use strict\";\nimport { toUtf8CodePoints, _toUtf8String, UnicodeNormalizationForm } from \"./utf8\";\nfunction bytes2(data) {\n if ((data.length % 4) !== 0) {\n throw new Error(\"bad data\");\n }\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}\nfunction createTable(data, func) {\n if (!func) {\n func = function (value) { return [parseInt(value, 16)]; };\n }\n let lo = 0;\n let result = {};\n data.split(\",\").forEach((pair) => {\n let comps = pair.split(\":\");\n lo += parseInt(comps[0], 16);\n result[lo] = func(comps[1]);\n });\n return result;\n}\nfunction createRangeTable(data) {\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 }\n else if (comps[1] === \"\") {\n comps[1] = \"1\";\n }\n let lo = hi + parseInt(comps[0], 16);\n hi = parseInt(comps[1], 16);\n return { l: lo, h: hi };\n });\n}\nfunction matchMap(value, ranges) {\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) {\n continue;\n }\n return range;\n }\n }\n return null;\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// @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));\nconst Table_B_2_ranges = [\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);\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\");\nfunction flatten(values) {\n return values.reduce((accum, value) => {\n value.forEach((value) => { accum.push(value); });\n return accum;\n }, []);\n}\nexport function _nameprepTableA1(codepoint) {\n return !!matchMap(codepoint, Table_A_1_ranges);\n}\nexport function _nameprepTableB2(codepoint) {\n let range = matchMap(codepoint, Table_B_2_ranges);\n if (range) {\n return [codepoint + range.s];\n }\n let codes = Table_B_2_lut_abs[codepoint];\n if (codes) {\n return codes;\n }\n let shift = Table_B_2_lut_rel[codepoint];\n if (shift) {\n return [codepoint + shift[0]];\n }\n let complex = Table_B_2_complex[codepoint];\n if (complex) {\n return complex;\n }\n return null;\n}\nexport function _nameprepTableC(codepoint) {\n return !!matchMap(codepoint, Table_C_ranges);\n}\nexport function nameprep(value) {\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) {\n return value.toLowerCase();\n }\n // Get the code points (keeping the current normalization)\n let codes = toUtf8CodePoints(value);\n codes = flatten(codes.map((code) => {\n // Substitute Table B.1 (Maps to Nothing)\n if (Table_B_1_flags.indexOf(code) >= 0) {\n return [];\n }\n if (code >= 0xfe00 && code <= 0xfe0f) {\n return [];\n }\n // Substitute Table B.2 (Case Folding)\n let codesTableB2 = _nameprepTableB2(code);\n if (codesTableB2) {\n return codesTableB2;\n }\n // No Substitution\n return [code];\n }));\n // Normalize using form KC\n codes = toUtf8CodePoints(_toUtf8String(codes), UnicodeNormalizationForm.NFKC);\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 // 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 // IDNA extras\n let name = _toUtf8String(codes);\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 // IDNA: 4.2.4\n if (name.length > 63) {\n throw new Error(\"too long\");\n }\n return name;\n}\n//# sourceMappingURL=idna.js.map","import { concat, hexlify } from \"@ethersproject/bytes\";\nimport { nameprep, toUtf8Bytes } from \"@ethersproject/strings\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst Zeros = new Uint8Array(32);\nZeros.fill(0);\nconst Partition = new RegExp(\"^((.*)\\\\.)?([^.]+)$\");\nexport function isValidName(name) {\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 }\n catch (error) { }\n return false;\n}\nexport function namehash(name) {\n /* istanbul ignore if */\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name; not a string\", \"name\", name);\n }\n let current = name;\n let result = 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 current = partition[2] || \"\";\n }\n return hexlify(result);\n}\n//# sourceMappingURL=namehash.js.map","\"use strict\";\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function decode(textData) {\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}\nexport function encode(data) {\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//# sourceMappingURL=base64.js.map","export const version = \"web/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { arrayify } from \"@ethersproject/bytes\";\nexport function getUrl(href, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (options == null) {\n options = {};\n }\n const request = {\n method: (options.method || \"GET\"),\n headers: (options.headers || {}),\n body: (options.body || undefined),\n mode: \"cors\",\n cache: \"no-cache\",\n credentials: \"same-origin\",\n redirect: \"follow\",\n referrer: \"client\", // no-referrer, *client\n };\n const response = yield fetch(href, request);\n const body = yield response.arrayBuffer();\n const headers = {};\n if (response.headers.forEach) {\n response.headers.forEach((value, key) => {\n headers[key.toLowerCase()] = value;\n });\n }\n else {\n ((response.headers).keys)().forEach((key) => {\n headers[key.toLowerCase()] = response.headers.get(key);\n });\n }\n return {\n headers: headers,\n statusCode: response.status,\n statusMessage: response.statusText,\n body: arrayify(new Uint8Array(body)),\n };\n });\n}\n//# sourceMappingURL=geturl.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\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\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { getUrl } from \"./geturl\";\nfunction staller(duration) {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\nfunction bodyify(value, type) {\n if (value == null) {\n return null;\n }\n if (typeof (value) === \"string\") {\n 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 }\n catch (error) { }\n ;\n }\n return hexlify(value);\n }\n return value;\n}\n// This API is still a work in progress; the future changes will likely be:\n// - ConnectionInfo => FetchDataRequest\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(connection, body, processFunc) {\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), \"invalid connection throttle limit\", \"connection.throttleLimit\", attemptLimit);\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), \"invalid connection throttle slot interval\", \"connection.throttleSlotInterval\", throttleSlotInterval);\n const headers = {};\n let url = null;\n // @TODO: Allow ConnectionInfo to override some of these values\n const options = {\n method: \"GET\",\n };\n let allow304 = false;\n let timeout = 2 * 60 * 1000;\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 url = connection.url;\n if (typeof (connection.timeout) === \"number\" && connection.timeout > 0) {\n timeout = connection.timeout;\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 options.allowGzip = !!connection.allowGzip;\n if (connection.user != null && connection.password != null) {\n if (url.substring(0, 6) !== \"https:\" && connection.allowInsecureAuthentication !== true) {\n logger.throwError(\"basic authentication requires a secure https url\", Logger.errors.INVALID_ARGUMENT, { argument: \"url\", url: url, user: connection.user, password: \"[REDACTED]\" });\n }\n const authorization = connection.user + \":\" + connection.password;\n headers[\"authorization\"] = {\n key: \"Authorization\",\n value: \"Basic \" + base64Encode(toUtf8Bytes(authorization))\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 const flatHeaders = {};\n Object.keys(headers).forEach((key) => {\n const header = headers[key];\n flatHeaders[header.key] = header.value;\n });\n options.headers = flatHeaders;\n const runningTimeout = (function () {\n let timer = null;\n const promise = new Promise(function (resolve, reject) {\n if (timeout) {\n timer = setTimeout(() => {\n if (timer == null) {\n return;\n }\n timer = null;\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 const cancel = function () {\n if (timer == null) {\n return;\n }\n clearTimeout(timer);\n timer = null;\n };\n return { promise, cancel };\n })();\n const runningFetch = (function () {\n return __awaiter(this, void 0, void 0, function* () {\n for (let attempt = 0; attempt < attemptLimit; attempt++) {\n let response = null;\n try {\n response = yield getUrl(url, options);\n // Exponential back-off throttling\n if (response.statusCode === 429 && attempt < attemptLimit) {\n let tryAgain = true;\n if (throttleCallback) {\n tryAgain = yield throttleCallback(attempt, url);\n }\n if (tryAgain) {\n let stall = 0;\n const retryAfter = response.headers[\"retry-after\"];\n if (typeof (retryAfter) === \"string\" && retryAfter.match(/^[1-9][0-9]*$/)) {\n stall = parseInt(retryAfter) * 1000;\n }\n else {\n stall = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n }\n //console.log(\"Stalling 429\");\n yield staller(stall);\n continue;\n }\n }\n }\n catch (error) {\n response = 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 let body = response.body;\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 if (processFunc) {\n try {\n const result = yield 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 = yield throttleCallback(attempt, url);\n }\n if (tryAgain) {\n const timeout = throttleSlotInterval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n //console.log(\"Stalling callback\");\n yield staller(timeout);\n continue;\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 runningTimeout.cancel();\n // If we had a processFunc, it eitehr returned a T or threw above.\n // The \"body\" is now a Uint8Array.\n return body;\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}\nexport function fetchJson(connection, json, processFunc) {\n let processJsonFunc = (value, response) => {\n let result = null;\n if (value != null) {\n try {\n result = JSON.parse(toUtf8String(value));\n }\n catch (error) {\n logger.throwError(\"invalid JSON\", Logger.errors.SERVER_ERROR, {\n body: value,\n error: error\n });\n }\n }\n if (processFunc) {\n result = processFunc(result, response);\n }\n return result;\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 = null;\n if (json != null) {\n body = toUtf8Bytes(json);\n // Create a connection with the content-type set for JSON\n const updated = (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 }\n else {\n updated.headers = { \"content-type\": \"application/json\" };\n }\n connection = updated;\n }\n return _fetchData(connection, body, processJsonFunc);\n}\nexport function poll(func, options) {\n if (!options) {\n options = {};\n }\n options = shallowCopy(options);\n if (options.floor == null) {\n options.floor = 0;\n }\n if (options.ceiling == null) {\n options.ceiling = 10000;\n }\n if (options.interval == null) {\n options.interval = 250;\n }\n return new Promise(function (resolve, reject) {\n let timer = null;\n let done = false;\n // Returns true if cancel was successful. Unsuccessful cancel means we're already done.\n const cancel = () => {\n if (done) {\n return false;\n }\n done = true;\n if (timer) {\n clearTimeout(timer);\n }\n return true;\n };\n if (options.timeout) {\n timer = setTimeout(() => {\n if (cancel()) {\n reject(new Error(\"timeout\"));\n }\n }, options.timeout);\n }\n const retryLimit = options.retryLimit;\n let attempt = 0;\n function check() {\n return func().then(function (result) {\n // If we have a result, or are allowed null then we're done\n if (result !== undefined) {\n if (cancel()) {\n resolve(result);\n }\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 // Otherwise, exponential back-off (up to 10s) our next request\n }\n else if (!done) {\n attempt++;\n if (attempt > retryLimit) {\n if (cancel()) {\n reject(new Error(\"retry limit reached\"));\n }\n return;\n }\n let timeout = options.interval * parseInt(String(Math.random() * Math.pow(2, attempt)));\n if (timeout < options.floor) {\n timeout = options.floor;\n }\n if (timeout > options.ceiling) {\n timeout = options.ceiling;\n }\n setTimeout(check, timeout);\n }\n return null;\n }, function (error) {\n if (cancel()) {\n reject(error);\n }\n });\n }\n check();\n });\n}\n//# sourceMappingURL=index.js.map","export const version = \"providers/5.4.5\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\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 { accessListify, parse as parseTransaction } from \"@ethersproject/transactions\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport class Formatter {\n constructor() {\n logger.checkNew(new.target, Formatter);\n this.formats = this.getDefaultFormats();\n }\n getDefaultFormats() {\n const formats = ({});\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 const strictData = (v) => { return this.data(v, true); };\n formats.transaction = {\n hash: hash,\n type: type,\n accessList: Formatter.allowNull(this.accessList.bind(this), null),\n blockHash: Formatter.allowNull(hash, null),\n blockNumber: Formatter.allowNull(number, null),\n transactionIndex: Formatter.allowNull(number, null),\n confirmations: Formatter.allowNull(number, null),\n from: address,\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 gasLimit: bigNumber,\n to: Formatter.allowNull(address, null),\n value: bigNumber,\n nonce: number,\n data: data,\n r: Formatter.allowNull(this.uint256),\n s: Formatter.allowNull(this.uint256),\n v: Formatter.allowNull(number),\n creates: Formatter.allowNull(address, null),\n raw: Formatter.allowNull(data),\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 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 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),\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 formats.block = {\n hash: hash,\n parentHash: hash,\n number: number,\n timestamp: number,\n nonce: Formatter.allowNull(hex),\n difficulty: this.difficulty.bind(this),\n gasLimit: bigNumber,\n gasUsed: bigNumber,\n miner: address,\n extraData: data,\n transactions: Formatter.allowNull(Formatter.arrayOf(hash)),\n baseFeePerGas: Formatter.allowNull(bigNumber)\n };\n formats.blockWithTransactions = shallowCopy(formats.block);\n formats.blockWithTransactions.transactions = Formatter.allowNull(Formatter.arrayOf(this.transactionResponse.bind(this)));\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 formats.filterLog = {\n blockNumber: Formatter.allowNull(number),\n blockHash: Formatter.allowNull(hash),\n transactionIndex: number,\n removed: Formatter.allowNull(this.boolean.bind(this)),\n address: address,\n data: Formatter.allowFalsish(data, \"0x\"),\n topics: Formatter.arrayOf(hash),\n transactionHash: hash,\n logIndex: number,\n };\n return formats;\n }\n accessList(accessList) {\n return accessListify(accessList || []);\n }\n // Requires a BigNumberish that is within the IEEE754 safe integer range; returns a number\n // Strict! Used on input.\n number(number) {\n if (number === \"0x\") {\n return 0;\n }\n return BigNumber.from(number).toNumber();\n }\n type(number) {\n if (number === \"0x\" || number == null) {\n return 0;\n }\n return BigNumber.from(number).toNumber();\n }\n // Strict! Used on input.\n bigNumber(value) {\n return BigNumber.from(value);\n }\n // Requires a boolean, \"true\" or \"false\"; returns a boolean\n boolean(value) {\n if (typeof (value) === \"boolean\") {\n return value;\n }\n if (typeof (value) === \"string\") {\n value = value.toLowerCase();\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n }\n throw new Error(\"invalid boolean - \" + value);\n }\n hex(value, strict) {\n if (typeof (value) === \"string\") {\n if (!strict && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexString(value)) {\n return value.toLowerCase();\n }\n }\n return logger.throwArgumentError(\"invalid hash\", \"value\", value);\n }\n data(value, strict) {\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 // Requires an address\n // Strict! Used on input.\n address(value) {\n return getAddress(value);\n }\n callAddress(value) {\n if (!isHexString(value, 32)) {\n return null;\n }\n const address = getAddress(hexDataSlice(value, 12));\n return (address === AddressZero) ? null : address;\n }\n contractAddress(value) {\n return getContractAddress(value);\n }\n // Strict! Used on input.\n blockTag(blockTag) {\n if (blockTag == null) {\n return \"latest\";\n }\n if (blockTag === \"earliest\") {\n return \"0x0\";\n }\n if (blockTag === \"latest\" || blockTag === \"pending\") {\n return blockTag;\n }\n if (typeof (blockTag) === \"number\" || isHexString(blockTag)) {\n return hexValue(blockTag);\n }\n throw new Error(\"invalid blockTag\");\n }\n // Requires a hash, optionally requires 0x prefix; returns prefixed lowercase hash.\n hash(value, strict) {\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 // Returns the difficulty as a number, or if too large (i.e. PoA network) null\n difficulty(value) {\n if (value == null) {\n return null;\n }\n const v = BigNumber.from(value);\n try {\n return v.toNumber();\n }\n catch (error) { }\n return null;\n }\n uint256(value) {\n if (!isHexString(value)) {\n throw new Error(\"invalid uint256\");\n }\n return hexZeroPad(value, 32);\n }\n _block(value, format) {\n if (value.author != null && value.miner == null) {\n value.miner = value.author;\n }\n return Formatter.check(format, value);\n }\n block(value) {\n return this._block(value, this.formats.block);\n }\n blockWithTransactions(value) {\n return this._block(value, this.formats.blockWithTransactions);\n }\n // Strict! Used on input.\n transactionRequest(value) {\n return Formatter.check(this.formats.transactionRequest, value);\n }\n transactionResponse(transaction) {\n // Rename gas to gasLimit\n if (transaction.gas != null && transaction.gasLimit == null) {\n transaction.gasLimit = transaction.gas;\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 // Rename input to data\n if (transaction.input != null && transaction.data == null) {\n transaction.data = transaction.input;\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 if ((transaction.type === 1 || transaction.type === 2) && transaction.accessList == null) {\n transaction.accessList = [];\n }\n const result = Formatter.check(this.formats.transaction, transaction);\n if (transaction.chainId != null) {\n let chainId = transaction.chainId;\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n result.chainId = chainId;\n }\n else {\n let chainId = transaction.networkId;\n // geth-etc returns chainId\n if (chainId == null && result.v == null) {\n chainId = transaction.chainId;\n }\n if (isHexString(chainId)) {\n chainId = BigNumber.from(chainId).toNumber();\n }\n if (typeof (chainId) !== \"number\" && result.v != null) {\n chainId = (result.v - 35) / 2;\n if (chainId < 0) {\n chainId = 0;\n }\n chainId = parseInt(chainId);\n }\n if (typeof (chainId) !== \"number\") {\n chainId = 0;\n }\n result.chainId = chainId;\n }\n // 0x0000... should actually be null\n if (result.blockHash && result.blockHash.replace(/0/g, \"\") === \"x\") {\n result.blockHash = null;\n }\n return result;\n }\n transaction(value) {\n return parseTransaction(value);\n }\n receiptLog(value) {\n return Formatter.check(this.formats.receiptLog, value);\n }\n receipt(value) {\n const result = Formatter.check(this.formats.receipt, value);\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 }\n else {\n logger.throwArgumentError(\"invalid alt-root-status\", \"value.root\", result.root);\n }\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 if (result.status != null) {\n result.byzantium = true;\n }\n return result;\n }\n topics(value) {\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 return null;\n }\n filter(value) {\n return Formatter.check(this.formats.filter, value);\n }\n filterLog(value) {\n return Formatter.check(this.formats.filterLog, value);\n }\n static check(format, object) {\n const result = {};\n for (const key in format) {\n try {\n const value = format[key](object[key]);\n if (value !== undefined) {\n result[key] = value;\n }\n }\n catch (error) {\n error.checkKey = key;\n error.checkValue = object[key];\n throw error;\n }\n }\n return result;\n }\n // if value is null-ish, nullValue is returned\n static allowNull(format, nullValue) {\n return (function (value) {\n if (value == null) {\n return nullValue;\n }\n return format(value);\n });\n }\n // If value is false-ish, replaceValue is returned\n static allowFalsish(format, replaceValue) {\n return (function (value) {\n if (!value) {\n return replaceValue;\n }\n return format(value);\n });\n }\n // Requires an Array satisfying check\n static arrayOf(format) {\n return (function (array) {\n if (!Array.isArray(array)) {\n throw new Error(\"not an array\");\n }\n const result = [];\n array.forEach(function (value) {\n result.push(format(value));\n });\n return result;\n });\n }\n}\nexport function isCommunityResourcable(value) {\n return (value && typeof (value.isCommunityResource) === \"function\");\n}\nexport function isCommunityResource(value) {\n return (isCommunityResourcable(value) && value.isCommunityResource());\n}\n// Show the throttle message only once\nlet throttleMessage = false;\nexport function showThrottleMessage() {\n if (throttleMessage) {\n return;\n }\n throttleMessage = true;\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//# sourceMappingURL=formatter.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { ForkEvent, Provider } from \"@ethersproject/abstract-provider\";\nimport { Base58 } from \"@ethersproject/basex\";\nimport { BigNumber } 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 } from \"@ethersproject/networks\";\nimport { defineReadOnly, getStatic, resolveProperties } from \"@ethersproject/properties\";\nimport { sha256 } from \"@ethersproject/sha2\";\nimport { toUtf8Bytes, toUtf8String } from \"@ethersproject/strings\";\nimport { poll } from \"@ethersproject/web\";\nimport bech32 from \"bech32\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { Formatter } from \"./formatter\";\n//////////////////////////////\n// Event Serializeing\nfunction checkTopic(topic) {\n if (topic == null) {\n return \"null\";\n }\n if (hexDataLength(topic) !== 32) {\n logger.throwArgumentError(\"invalid topic\", \"topic\", topic);\n }\n return topic.toLowerCase();\n}\nfunction serializeTopics(topics) {\n // Remove trailing null AND-topics; they are redundant\n topics = topics.slice();\n while (topics.length > 0 && topics[topics.length - 1] == null) {\n topics.pop();\n }\n return topics.map((topic) => {\n if (Array.isArray(topic)) {\n // Only track unique OR-topics\n const unique = {};\n topic.forEach((topic) => {\n unique[checkTopic(topic)] = true;\n });\n // The order of OR-topics does not matter\n const sorted = Object.keys(unique);\n sorted.sort();\n return sorted.join(\"|\");\n }\n else {\n return checkTopic(topic);\n }\n }).join(\"&\");\n}\nfunction deserializeTopics(data) {\n if (data === \"\") {\n return [];\n }\n return data.split(/&/g).map((topic) => {\n if (topic === \"\") {\n return [];\n }\n const comps = topic.split(\"|\").map((topic) => {\n return ((topic === \"null\") ? null : topic);\n });\n return ((comps.length === 1) ? comps[0] : comps);\n });\n}\nfunction getEventTag(eventName) {\n if (typeof (eventName) === \"string\") {\n eventName = eventName.toLowerCase();\n if (hexDataLength(eventName) === 32) {\n return \"tx:\" + eventName;\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 throw new Error(\"invalid event - \" + eventName);\n}\n//////////////////////////////\n// Helper Object\nfunction getTime() {\n return (new Date()).getTime();\n}\nfunction stall(duration) {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n//////////////////////////////\n// Provider Object\n/**\n * EventType\n * - \"block\"\n * - \"poll\"\n * - \"didPoll\"\n * - \"pending\"\n * - \"error\"\n * - \"network\"\n * - filter\n * - topics array\n * - transaction hash\n */\nconst PollableEvents = [\"block\", \"network\", \"pending\", \"poll\"];\nexport class Event {\n constructor(tag, listener, once) {\n defineReadOnly(this, \"tag\", tag);\n defineReadOnly(this, \"listener\", listener);\n defineReadOnly(this, \"once\", once);\n }\n get event() {\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 get type() {\n return this.tag.split(\":\")[0];\n }\n get hash() {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"tx\") {\n return null;\n }\n return comps[1];\n }\n get filter() {\n const comps = this.tag.split(\":\");\n if (comps[0] !== \"filter\") {\n return null;\n }\n const address = comps[1];\n const topics = deserializeTopics(comps[2]);\n const filter = {};\n if (topics.length > 0) {\n filter.topics = topics;\n }\n if (address && address !== \"*\") {\n filter.address = address;\n }\n return filter;\n }\n pollable() {\n return (this.tag.indexOf(\":\") >= 0 || PollableEvents.indexOf(this.tag) >= 0);\n }\n}\n;\n// https://github.com/satoshilabs/slips/blob/master/slip-0044.md\nconst coinInfos = {\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};\nfunction bytes32ify(value) {\n return hexZeroPad(BigNumber.from(value).toHexString(), 32);\n}\n// Compute the Base58Check encoded data (checksum is first 4 bytes of sha256d)\nfunction base58Encode(data) {\n return Base58.encode(concat([data, hexDataSlice(sha256(sha256(data)), 0, 4)]));\n}\nexport class Resolver {\n constructor(provider, address, name) {\n defineReadOnly(this, \"provider\", provider);\n defineReadOnly(this, \"name\", name);\n defineReadOnly(this, \"address\", provider.formatter.address(address));\n }\n _fetchBytes(selector, parameters) {\n return __awaiter(this, void 0, void 0, function* () {\n // keccak256(\"addr(bytes32,uint256)\")\n const transaction = {\n to: this.address,\n data: hexConcat([selector, namehash(this.name), (parameters || \"0x\")])\n };\n try {\n const result = yield this.provider.call(transaction);\n if (result === \"0x\") {\n 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 }\n catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n return null;\n }\n return null;\n }\n });\n }\n _getAddress(coinType, hexBytes) {\n const coinInfo = coinInfos[String(coinType)];\n if (coinInfo == null) {\n logger.throwError(`unsupported coin type: ${coinType}`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: `getAddress(${coinType})`\n });\n }\n if (coinInfo.ilk === \"eth\") {\n return this.provider.formatter.address(hexBytes);\n }\n const bytes = arrayify(hexBytes);\n // P2PKH: OP_DUP OP_HASH160 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 // P2SH: OP_HASH160 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 // Bech32\n if (coinInfo.prefix != null) {\n const length = bytes[1];\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 }\n else {\n version = -1;\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 return null;\n }\n getAddress(coinType) {\n return __awaiter(this, void 0, void 0, function* () {\n if (coinType == null) {\n 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 = yield this.provider.call(transaction);\n // No address\n if (hexBytes === \"0x\" || hexBytes === HashZero) {\n return null;\n }\n return this.provider.formatter.callAddress(hexBytes);\n }\n catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n return null;\n }\n throw error;\n }\n }\n // keccak256(\"addr(bytes32,uint256\")\n const hexBytes = yield this._fetchBytes(\"0xf1cb7e06\", bytes32ify(coinType));\n // No address\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n // Compute the address\n const address = this._getAddress(coinType, hexBytes);\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 return address;\n });\n }\n getContentHash() {\n return __awaiter(this, void 0, void 0, function* () {\n // keccak256(\"contenthash()\")\n const hexBytes = yield this._fetchBytes(\"0xbc1c58d1\");\n // No contenthash\n if (hexBytes == null || hexBytes === \"0x\") {\n 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 // 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 return logger.throwError(`invalid or unsupported content hash data`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"getContentHash()\",\n data: hexBytes\n });\n });\n }\n getText(key) {\n return __awaiter(this, void 0, void 0, function* () {\n // The key encoded as parameter to fetchBytes\n let keyBytes = toUtf8Bytes(key);\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 // Pad to word-size (32 bytes)\n if ((keyBytes.length % 32) !== 0) {\n keyBytes = concat([keyBytes, hexZeroPad(\"0x\", 32 - (key.length % 32))]);\n }\n const hexBytes = yield this._fetchBytes(\"0x59d1d43c\", hexlify(keyBytes));\n if (hexBytes == null || hexBytes === \"0x\") {\n return null;\n }\n return toUtf8String(hexBytes);\n });\n }\n}\nlet defaultFormatter = null;\nlet nextPollId = 1;\nexport class BaseProvider extends Provider {\n /**\n * ready\n *\n * A Promise 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 constructor(network) {\n logger.checkNew(new.target, Provider);\n super();\n // Events being listened to\n this._events = [];\n this._emitted = { block: -2 };\n this.formatter = new.target.getFormatter();\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) {\n network = this.detectNetwork();\n }\n if (network instanceof Promise) {\n this._networkPromise = network;\n // Squash any \"unhandled promise\" errors; that do not need to be handled\n network.catch((error) => { });\n // Trigger initial network setting (async)\n this._ready().catch((error) => { });\n }\n else {\n const knownNetwork = getStatic((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 this._maxInternalBlockNumber = -1024;\n this._lastBlockNumber = -2;\n this._pollingInterval = 4000;\n this._fastQueryDate = 0;\n }\n _ready() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._network == null) {\n let network = null;\n if (this._networkPromise) {\n try {\n network = yield this._networkPromise;\n }\n catch (error) { }\n }\n // Try the Provider's network detection (this MUST throw if it cannot)\n if (network == null) {\n network = yield this.detectNetwork();\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 // Possible this call stacked so do not call defineReadOnly again\n if (this._network == null) {\n if (this.anyNetwork) {\n this._network = network;\n }\n else {\n defineReadOnly(this, \"_network\", network);\n }\n this.emit(\"network\", network, null);\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() {\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 // @TODO: Remove this and just create a singleton formatter\n static getFormatter() {\n if (defaultFormatter == null) {\n defaultFormatter = new Formatter();\n }\n return defaultFormatter;\n }\n // @TODO: Remove this and just use getNetwork\n static getNetwork(network) {\n return getNetwork((network == null) ? \"homestead\" : network);\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 _getInternalBlockNumber(maxAge) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._ready();\n // Allowing stale data up to maxAge old\n if (maxAge > 0) {\n // While there are pending internal block requests...\n while (this._internalBlockNumber) {\n // ...\"remember\" which fetch we started with\n const internalBlockNumber = this._internalBlockNumber;\n try {\n // Check the result is not too stale\n const result = yield internalBlockNumber;\n if ((getTime() - result.respTime) <= maxAge) {\n return result.blockNumber;\n }\n // Too old; fetch a new value\n break;\n }\n catch (error) {\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 const reqTime = getTime();\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 const respTime = getTime();\n blockNumber = BigNumber.from(blockNumber).toNumber();\n if (blockNumber < this._maxInternalBlockNumber) {\n blockNumber = this._maxInternalBlockNumber;\n }\n this._maxInternalBlockNumber = blockNumber;\n this._setFastBlockNumber(blockNumber); // @TODO: Still need this?\n return { blockNumber, reqTime, respTime };\n });\n this._internalBlockNumber = checkInternalBlockNumber;\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 return (yield checkInternalBlockNumber).blockNumber;\n });\n }\n poll() {\n return __awaiter(this, void 0, void 0, function* () {\n const pollId = nextPollId++;\n // Track all running promises, so we can trigger a post-poll once they are complete\n const runners = [];\n let blockNumber = null;\n try {\n blockNumber = yield this._getInternalBlockNumber(100 + this.pollingInterval / 2);\n }\n catch (error) {\n this.emit(\"error\", error);\n return;\n }\n this._setFastBlockNumber(blockNumber);\n // Emit a poll event after we have the latest (fast) block number\n this.emit(\"poll\", pollId, blockNumber);\n // If the block has not changed, meh.\n if (blockNumber === this._lastBlockNumber) {\n this.emit(\"didPoll\", pollId);\n return;\n }\n // First polling cycle, trigger a \"block\" events\n if (this._emitted.block === -2) {\n this._emitted.block = blockNumber - 1;\n }\n if (Math.abs((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 = this._emitted.block + 1; i <= blockNumber; i++) {\n this.emit(\"block\", i);\n }\n }\n // The emitted block was updated, check for obsolete events\n if (this._emitted.block !== blockNumber) {\n this._emitted.block = blockNumber;\n Object.keys(this._emitted).forEach((key) => {\n // The block event does not expire\n if (key === \"block\") {\n return;\n }\n // The block we were at when we emitted this event\n const eventBlockNumber = this._emitted[key];\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\") {\n 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 // First polling cycle\n if (this._lastBlockNumber === -2) {\n this._lastBlockNumber = blockNumber - 1;\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) {\n return null;\n }\n this._emitted[\"t:\" + hash] = receipt.blockNumber;\n this.emit(hash, receipt);\n return null;\n }).catch((error) => { this.emit(\"error\", error); });\n runners.push(runner);\n break;\n }\n case \"filter\": {\n const filter = event.filter;\n filter.fromBlock = this._lastBlockNumber + 1;\n filter.toBlock = blockNumber;\n const runner = this.getLogs(filter).then((logs) => {\n if (logs.length === 0) {\n return;\n }\n logs.forEach((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) => { this.emit(\"error\", error); });\n runners.push(runner);\n break;\n }\n }\n });\n this._lastBlockNumber = blockNumber;\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 return;\n });\n }\n // Deprecated; do not use this\n resetEventsBlock(blockNumber) {\n this._lastBlockNumber = blockNumber - 1;\n if (this.polling) {\n this.poll();\n }\n }\n get network() {\n return this._network;\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 detectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n return logger.throwError(\"provider does not support network detection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"provider.detectNetwork\"\n });\n });\n }\n getNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n const network = yield this._ready();\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 = yield this.detectNetwork();\n if (network.chainId !== currentNetwork.chainId) {\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 // 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 // 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 yield stall(0);\n return this._network;\n }\n const error = logger.makeError(\"underlying network changed\", Logger.errors.NETWORK_ERROR, {\n event: \"changed\",\n network: network,\n detectedNetwork: currentNetwork\n });\n this.emit(\"error\", error);\n throw error;\n }\n return network;\n });\n }\n get blockNumber() {\n this._getInternalBlockNumber(100 + this.pollingInterval / 2).then((blockNumber) => {\n this._setFastBlockNumber(blockNumber);\n }, (error) => { });\n return (this._fastBlockNumber != null) ? this._fastBlockNumber : -1;\n }\n get polling() {\n return (this._poller != null);\n }\n set polling(value) {\n if (value && !this._poller) {\n this._poller = setInterval(() => { this.poll(); }, this.pollingInterval);\n if (!this._bootstrapPoll) {\n this._bootstrapPoll = setTimeout(() => {\n this.poll();\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) {\n 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 get pollingInterval() {\n return this._pollingInterval;\n }\n set pollingInterval(value) {\n if (typeof (value) !== \"number\" || value <= 0 || parseInt(String(value)) != value) {\n throw new Error(\"invalid polling interval\");\n }\n this._pollingInterval = value;\n if (this._poller) {\n clearInterval(this._poller);\n this._poller = setInterval(() => { this.poll(); }, this._pollingInterval);\n }\n }\n _getFastBlockNumber() {\n const now = getTime();\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 return this._fastBlockNumberPromise;\n }\n _setFastBlockNumber(blockNumber) {\n // Older block, maybe a stale request\n if (this._fastBlockNumber != null && blockNumber < this._fastBlockNumber) {\n return;\n }\n // Update the time we updated the blocknumber\n this._fastQueryDate = getTime();\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 waitForTransaction(transactionHash, confirmations, timeout) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._waitForTransaction(transactionHash, (confirmations == null) ? 1 : confirmations, timeout || 0, null);\n });\n }\n _waitForTransaction(transactionHash, confirmations, timeout, replaceable) {\n return __awaiter(this, void 0, void 0, function* () {\n const receipt = yield this.getTransactionReceipt(transactionHash);\n // Receipt is already good\n if ((receipt ? receipt.confirmations : 0) >= confirmations) {\n return receipt;\n }\n // Poll until the receipt is good...\n return new Promise((resolve, reject) => {\n const cancelFuncs = [];\n let done = false;\n const alreadyDone = function () {\n if (done) {\n return true;\n }\n done = true;\n cancelFuncs.forEach((func) => { func(); });\n return false;\n };\n const minedHandler = (receipt) => {\n if (receipt.confirmations < confirmations) {\n return;\n }\n if (alreadyDone()) {\n return;\n }\n resolve(receipt);\n };\n this.on(transactionHash, minedHandler);\n cancelFuncs.push(() => { this.removeListener(transactionHash, minedHandler); });\n if (replaceable) {\n let lastBlockNumber = replaceable.startBlock;\n let scannedBlock = null;\n const replaceHandler = (blockNumber) => __awaiter(this, void 0, void 0, function* () {\n if (done) {\n 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 yield stall(1000);\n this.getTransactionCount(replaceable.from).then((nonce) => __awaiter(this, void 0, void 0, function* () {\n if (done) {\n 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 = yield this.getTransaction(transactionHash);\n if (mined && mined.blockNumber != null) {\n 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 while (scannedBlock <= blockNumber) {\n if (done) {\n return;\n }\n const block = yield this.getBlockWithTransactions(scannedBlock);\n for (let ti = 0; ti < block.transactions.length; ti++) {\n const tx = block.transactions[ti];\n // Successfully mined!\n if (tx.hash === transactionHash) {\n 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) {\n return;\n }\n // Get the receipt of the replacement\n const receipt = yield this.waitForTransaction(tx.hash, confirmations);\n // Already resolved or rejected (prolly a timeout)\n if (alreadyDone()) {\n 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 }\n else if (tx.data === \"0x\" && tx.from === tx.to && tx.value.isZero()) {\n reason = \"cancelled\";\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 return;\n }\n }\n scannedBlock++;\n }\n }\n if (done) {\n return;\n }\n this.once(\"block\", replaceHandler);\n }), (error) => {\n if (done) {\n return;\n }\n this.once(\"block\", replaceHandler);\n });\n });\n if (done) {\n return;\n }\n this.once(\"block\", replaceHandler);\n cancelFuncs.push(() => {\n this.removeListener(\"block\", replaceHandler);\n });\n }\n if (typeof (timeout) === \"number\" && timeout > 0) {\n const timer = setTimeout(() => {\n if (alreadyDone()) {\n return;\n }\n reject(logger.makeError(\"timeout exceeded\", Logger.errors.TIMEOUT, { timeout: timeout }));\n }, timeout);\n if (timer.unref) {\n timer.unref();\n }\n cancelFuncs.push(() => { clearTimeout(timer); });\n }\n });\n });\n }\n getBlockNumber() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._getInternalBlockNumber(0);\n });\n }\n getGasPrice() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const result = yield this.perform(\"getGasPrice\", {});\n try {\n return BigNumber.from(result);\n }\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 getBalance(addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const params = yield resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n const result = yield this.perform(\"getBalance\", params);\n try {\n return BigNumber.from(result);\n }\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 getTransactionCount(addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const params = yield resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n const result = yield this.perform(\"getTransactionCount\", params);\n try {\n return BigNumber.from(result).toNumber();\n }\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 getCode(addressOrName, blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const params = yield resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag)\n });\n const result = yield this.perform(\"getCode\", params);\n try {\n return hexlify(result);\n }\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 getStorageAt(addressOrName, position, blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const params = yield resolveProperties({\n address: this._getAddress(addressOrName),\n blockTag: this._getBlockTag(blockTag),\n position: Promise.resolve(position).then((p) => hexValue(p))\n });\n const result = yield this.perform(\"getStorageAt\", params);\n try {\n return hexlify(result);\n }\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, hash, startBlock) {\n if (hash != null && hexDataLength(hash) !== 32) {\n throw new Error(\"invalid response - sendTransaction\");\n }\n const result = tx;\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 result.wait = (confirms, timeout) => __awaiter(this, void 0, void 0, function* () {\n if (confirms == null) {\n confirms = 1;\n }\n if (timeout == null) {\n 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 const receipt = yield this._waitForTransaction(tx.hash, confirms, timeout, replacement);\n if (receipt == null && confirms === 0) {\n return null;\n }\n // No longer pending, allow the polling loop to garbage collect this\n this._emitted[\"t:\" + tx.hash] = receipt.blockNumber;\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 return result;\n }\n sendTransaction(signedTransaction) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const hexTx = yield Promise.resolve(signedTransaction).then(t => hexlify(t));\n const tx = this.formatter.transaction(signedTransaction);\n if (tx.confirmations == null) {\n tx.confirmations = 0;\n }\n const blockNumber = yield this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n try {\n const hash = yield this.perform(\"sendTransaction\", { signedTransaction: hexTx });\n return this._wrapTransaction(tx, hash, blockNumber);\n }\n catch (error) {\n error.transaction = tx;\n error.transactionHash = tx.hash;\n throw error;\n }\n });\n }\n _getTransactionRequest(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n const values = yield transaction;\n const tx = {};\n [\"from\", \"to\"].forEach((key) => {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? this._getAddress(v) : null));\n });\n [\"gasLimit\", \"gasPrice\", \"maxFeePerGas\", \"maxPriorityFeePerGas\", \"value\"].forEach((key) => {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? BigNumber.from(v) : null));\n });\n [\"type\"].forEach((key) => {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then((v) => ((v != null) ? v : null));\n });\n if (values.accessList) {\n tx.accessList = this.formatter.accessList(values.accessList);\n }\n [\"data\"].forEach((key) => {\n if (values[key] == null) {\n return;\n }\n tx[key] = Promise.resolve(values[key]).then((v) => (v ? hexlify(v) : null));\n });\n return this.formatter.transactionRequest(yield resolveProperties(tx));\n });\n }\n _getFilter(filter) {\n return __awaiter(this, void 0, void 0, function* () {\n filter = yield filter;\n const result = {};\n if (filter.address != null) {\n result.address = this._getAddress(filter.address);\n }\n [\"blockHash\", \"topics\"].forEach((key) => {\n if (filter[key] == null) {\n return;\n }\n result[key] = filter[key];\n });\n [\"fromBlock\", \"toBlock\"].forEach((key) => {\n if (filter[key] == null) {\n return;\n }\n result[key] = this._getBlockTag(filter[key]);\n });\n return this.formatter.filter(yield resolveProperties(result));\n });\n }\n call(transaction, blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const params = yield resolveProperties({\n transaction: this._getTransactionRequest(transaction),\n blockTag: this._getBlockTag(blockTag)\n });\n const result = yield this.perform(\"call\", params);\n try {\n return hexlify(result);\n }\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 estimateGas(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const params = yield resolveProperties({\n transaction: this._getTransactionRequest(transaction)\n });\n const result = yield this.perform(\"estimateGas\", params);\n try {\n return BigNumber.from(result);\n }\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 _getAddress(addressOrName) {\n return __awaiter(this, void 0, void 0, function* () {\n const address = yield 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 _getBlock(blockHashOrBlockTag, includeTransactions) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n blockHashOrBlockTag = yield blockHashOrBlockTag;\n // If blockTag is a number (not \"latest\", etc), this is the block number\n let blockNumber = -128;\n const params = {\n includeTransactions: !!includeTransactions\n };\n if (isHexString(blockHashOrBlockTag, 32)) {\n params.blockHash = blockHashOrBlockTag;\n }\n else {\n try {\n params.blockTag = this.formatter.blockTag(yield this._getBlockTag(blockHashOrBlockTag));\n if (isHexString(params.blockTag)) {\n blockNumber = parseInt(params.blockTag.substring(2), 16);\n }\n }\n catch (error) {\n logger.throwArgumentError(\"invalid block hash or block tag\", \"blockHashOrBlockTag\", blockHashOrBlockTag);\n }\n }\n return poll(() => __awaiter(this, void 0, void 0, function* () {\n const block = yield this.perform(\"getBlock\", params);\n // Block was not found\n if (block == null) {\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) {\n 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) {\n return null;\n }\n }\n // Retry on the next block\n return undefined;\n }\n // Add transactions\n if (includeTransactions) {\n let blockNumber = 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 = yield 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) {\n confirmations = 1;\n }\n tx.confirmations = confirmations;\n }\n }\n const blockWithTxs = this.formatter.blockWithTransactions(block);\n blockWithTxs.transactions = blockWithTxs.transactions.map((tx) => this._wrapTransaction(tx));\n return blockWithTxs;\n }\n return this.formatter.block(block);\n }), { oncePoll: this });\n });\n }\n getBlock(blockHashOrBlockTag) {\n return (this._getBlock(blockHashOrBlockTag, false));\n }\n getBlockWithTransactions(blockHashOrBlockTag) {\n return (this._getBlock(blockHashOrBlockTag, true));\n }\n getTransaction(transactionHash) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n transactionHash = yield transactionHash;\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n return poll(() => __awaiter(this, void 0, void 0, function* () {\n const result = yield this.perform(\"getTransaction\", params);\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n const tx = this.formatter.transactionResponse(result);\n if (tx.blockNumber == null) {\n tx.confirmations = 0;\n }\n else if (tx.confirmations == null) {\n const blockNumber = yield this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - tx.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n tx.confirmations = confirmations;\n }\n return this._wrapTransaction(tx);\n }), { oncePoll: this });\n });\n }\n getTransactionReceipt(transactionHash) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n transactionHash = yield transactionHash;\n const params = { transactionHash: this.formatter.hash(transactionHash, true) };\n return poll(() => __awaiter(this, void 0, void 0, function* () {\n const result = yield this.perform(\"getTransactionReceipt\", params);\n if (result == null) {\n if (this._emitted[\"t:\" + transactionHash] == null) {\n return null;\n }\n return undefined;\n }\n // \"geth-etc\" returns receipts before they are ready\n if (result.blockHash == null) {\n return undefined;\n }\n const receipt = this.formatter.receipt(result);\n if (receipt.blockNumber == null) {\n receipt.confirmations = 0;\n }\n else if (receipt.confirmations == null) {\n const blockNumber = yield this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n // Add the confirmations using the fast block number (pessimistic)\n let confirmations = (blockNumber - receipt.blockNumber) + 1;\n if (confirmations <= 0) {\n confirmations = 1;\n }\n receipt.confirmations = confirmations;\n }\n return receipt;\n }), { oncePoll: this });\n });\n }\n getLogs(filter) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n const params = yield resolveProperties({ filter: this._getFilter(filter) });\n const logs = yield this.perform(\"getLogs\", params);\n logs.forEach((log) => {\n if (log.removed == null) {\n log.removed = false;\n }\n });\n return Formatter.arrayOf(this.formatter.filterLog.bind(this.formatter))(logs);\n });\n }\n getEtherPrice() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.getNetwork();\n return this.perform(\"getEtherPrice\", {});\n });\n }\n _getBlockTag(blockTag) {\n return __awaiter(this, void 0, void 0, function* () {\n blockTag = yield blockTag;\n if (typeof (blockTag) === \"number\" && blockTag < 0) {\n if (blockTag % 1) {\n logger.throwArgumentError(\"invalid BlockTag\", \"blockTag\", blockTag);\n }\n let blockNumber = yield this._getInternalBlockNumber(100 + 2 * this.pollingInterval);\n blockNumber += blockTag;\n if (blockNumber < 0) {\n blockNumber = 0;\n }\n return this.formatter.blockTag(blockNumber);\n }\n return this.formatter.blockTag(blockTag);\n });\n }\n getResolver(name) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const address = yield this._getResolver(name);\n if (address == null) {\n return null;\n }\n return new Resolver(this, address, name);\n }\n catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n return null;\n }\n return null;\n }\n });\n }\n _getResolver(name) {\n return __awaiter(this, void 0, void 0, function* () {\n // Get the resolver from the blockchain\n const network = yield this.getNetwork();\n // No ENS...\n if (!network.ensAddress) {\n logger.throwError(\"network does not support ENS\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"ENS\", network: network.name });\n }\n // keccak256(\"resolver(bytes32)\")\n const transaction = {\n to: network.ensAddress,\n data: (\"0x0178b8bf\" + namehash(name).substring(2))\n };\n try {\n return this.formatter.callAddress(yield this.call(transaction));\n }\n catch (error) {\n if (error.code === Logger.errors.CALL_EXCEPTION) {\n return null;\n }\n throw error;\n }\n });\n }\n resolveName(name) {\n return __awaiter(this, void 0, void 0, function* () {\n name = yield name;\n // If it is already an address, nothing to resolve\n try {\n return Promise.resolve(this.formatter.address(name));\n }\n catch (error) {\n // If is is a hexstring, the address is bad (See #694)\n if (isHexString(name)) {\n throw error;\n }\n }\n if (typeof (name) !== \"string\") {\n logger.throwArgumentError(\"invalid ENS name\", \"name\", name);\n }\n // Get the addr from the resovler\n const resolver = yield this.getResolver(name);\n if (!resolver) {\n return null;\n }\n return yield resolver.getAddress();\n });\n }\n lookupAddress(address) {\n return __awaiter(this, void 0, void 0, function* () {\n address = yield address;\n address = this.formatter.address(address);\n const reverseName = address.substring(2).toLowerCase() + \".addr.reverse\";\n const resolverAddress = yield this._getResolver(reverseName);\n if (!resolverAddress) {\n return null;\n }\n // keccak(\"name(bytes32)\")\n let bytes = arrayify(yield this.call({\n to: resolverAddress,\n data: (\"0x691f3431\" + namehash(reverseName).substring(2))\n }));\n // Strip off the dynamic string pointer (0x20)\n if (bytes.length < 32 || !BigNumber.from(bytes.slice(0, 32)).eq(32)) {\n return null;\n }\n bytes = bytes.slice(32);\n // Not a length-prefixed string\n if (bytes.length < 32) {\n 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 // Length longer than available data\n if (length > bytes.length) {\n return null;\n }\n const name = toUtf8String(bytes.slice(0, length));\n // Make sure the reverse record matches the foward record\n const addr = yield this.resolveName(name);\n if (addr != address) {\n return null;\n }\n return name;\n });\n }\n perform(method, params) {\n return logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n _startEvent(event) {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n _stopEvent(event) {\n this.polling = (this._events.filter((e) => e.pollable()).length > 0);\n }\n _addEventListener(eventName, listener, once) {\n const event = new Event(getEventTag(eventName), listener, once);\n this._events.push(event);\n this._startEvent(event);\n return this;\n }\n on(eventName, listener) {\n return this._addEventListener(eventName, listener, false);\n }\n once(eventName, listener) {\n return this._addEventListener(eventName, listener, true);\n }\n emit(eventName, ...args) {\n let result = false;\n let stopped = [];\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) {\n return true;\n }\n setTimeout(() => {\n event.listener.apply(this, args);\n }, 0);\n result = true;\n if (event.once) {\n stopped.push(event);\n return false;\n }\n return true;\n });\n stopped.forEach((event) => { this._stopEvent(event); });\n return result;\n }\n listenerCount(eventName) {\n if (!eventName) {\n 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 listeners(eventName) {\n if (eventName == null) {\n return this._events.map((event) => event.listener);\n }\n let eventTag = getEventTag(eventName);\n return this._events\n .filter((event) => (event.tag === eventTag))\n .map((event) => event.listener);\n }\n off(eventName, listener) {\n if (listener == null) {\n return this.removeAllListeners(eventName);\n }\n const stopped = [];\n let found = false;\n let eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag || event.listener != listener) {\n return true;\n }\n if (found) {\n return true;\n }\n found = true;\n stopped.push(event);\n return false;\n });\n stopped.forEach((event) => { this._stopEvent(event); });\n return this;\n }\n removeAllListeners(eventName) {\n let stopped = [];\n if (eventName == null) {\n stopped = this._events;\n this._events = [];\n }\n else {\n const eventTag = getEventTag(eventName);\n this._events = this._events.filter((event) => {\n if (event.tag !== eventTag) {\n return true;\n }\n stopped.push(event);\n return false;\n });\n }\n stopped.forEach((event) => { this._stopEvent(event); });\n return this;\n }\n}\n//# sourceMappingURL=base-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Signer } from \"@ethersproject/abstract-signer\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { _TypedDataEncoder } from \"@ethersproject/hash\";\nimport { checkProperties, deepCopy, defineReadOnly, getStatic, resolveProperties, shallowCopy } from \"@ethersproject/properties\";\nimport { toUtf8Bytes } from \"@ethersproject/strings\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { fetchJson, poll } from \"@ethersproject/web\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BaseProvider } from \"./base-provider\";\nconst errorGas = [\"call\", \"estimateGas\"];\nfunction checkError(method, error, params) {\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 logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\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 }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n message = (message || \"\").toLowerCase();\n const transaction = params.transaction || params.signedTransaction;\n // \"insufficient funds for gas * price + value + cost(data)\"\n if (message.match(/insufficient funds|base fee exceeds gas limit/)) {\n logger.throwError(\"insufficient funds for intrinsic transaction cost\", Logger.errors.INSUFFICIENT_FUNDS, {\n error, method, transaction\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 // \"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 // \"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 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 throw error;\n}\nfunction timer(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\nfunction getResult(payload) {\n if (payload.error) {\n // @TODO: not any\n const error = new Error(payload.error.message);\n error.code = payload.error.code;\n error.data = payload.error.data;\n throw error;\n }\n return payload.result;\n}\nfunction getLowerCase(value) {\n if (value) {\n return value.toLowerCase();\n }\n return value;\n}\nconst _constructorGuard = {};\nexport class JsonRpcSigner extends Signer {\n constructor(constructorGuard, provider, addressOrIndex) {\n logger.checkNew(new.target, JsonRpcSigner);\n super();\n if (constructorGuard !== _constructorGuard) {\n throw new Error(\"do not call the JsonRpcSigner constructor directly; use provider.getSigner\");\n }\n defineReadOnly(this, \"provider\", provider);\n if (addressOrIndex == null) {\n 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 connect(provider) {\n return logger.throwError(\"cannot alter JSON-RPC Signer connection\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"connect\"\n });\n }\n connectUnchecked() {\n return new UncheckedJsonRpcSigner(_constructorGuard, this.provider, this._address || this._index);\n }\n getAddress() {\n if (this._address) {\n return Promise.resolve(this._address);\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 sendUncheckedTransaction(transaction) {\n transaction = shallowCopy(transaction);\n const fromAddress = this.getAddress().then((address) => {\n if (address) {\n address = address.toLowerCase();\n }\n return address;\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 if (transaction.to != null) {\n transaction.to = Promise.resolve(transaction.to).then((to) => __awaiter(this, void 0, void 0, function* () {\n if (to == null) {\n return null;\n }\n const address = yield 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 return resolveProperties({\n tx: resolveProperties(transaction),\n sender: fromAddress\n }).then(({ tx, sender }) => {\n if (tx.from != null) {\n if (tx.from.toLowerCase() !== sender) {\n logger.throwArgumentError(\"from address mismatch\", \"transaction\", transaction);\n }\n }\n else {\n tx.from = sender;\n }\n const hexTx = this.provider.constructor.hexlifyTransaction(tx, { from: true });\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 signTransaction(transaction) {\n return logger.throwError(\"signing transactions is unsupported\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"signTransaction\"\n });\n }\n sendTransaction(transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n // This cannot be mined any earlier than any recent block\n const blockNumber = yield this.provider._getInternalBlockNumber(100 + 2 * this.provider.pollingInterval);\n // Send the transaction\n const hash = yield this.sendUncheckedTransaction(transaction);\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 yield poll(() => __awaiter(this, void 0, void 0, function* () {\n const tx = yield this.provider.getTransaction(hash);\n if (tx === null) {\n return undefined;\n }\n return this.provider._wrapTransaction(tx, hash, blockNumber);\n }), { oncePoll: this.provider });\n }\n catch (error) {\n error.transactionHash = hash;\n throw error;\n }\n });\n }\n signMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = ((typeof (message) === \"string\") ? toUtf8Bytes(message) : message);\n const address = yield this.getAddress();\n // https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign\n return yield this.provider.send(\"eth_sign\", [address.toLowerCase(), hexlify(data)]);\n });\n }\n _signTypedData(domain, types, value) {\n return __awaiter(this, void 0, void 0, function* () {\n // Populate any ENS names (in-place)\n const populated = yield _TypedDataEncoder.resolveNames(domain, types, value, (name) => {\n return this.provider.resolveName(name);\n });\n const address = yield this.getAddress();\n return yield this.provider.send(\"eth_signTypedData_v4\", [\n address.toLowerCase(),\n JSON.stringify(_TypedDataEncoder.getPayload(populated.domain, types, populated.value))\n ]);\n });\n }\n unlock(password) {\n return __awaiter(this, void 0, void 0, function* () {\n const provider = this.provider;\n const address = yield this.getAddress();\n return provider.send(\"personal_unlockAccount\", [address.toLowerCase(), password, null]);\n });\n }\n}\nclass UncheckedJsonRpcSigner extends JsonRpcSigner {\n sendTransaction(transaction) {\n return this.sendUncheckedTransaction(transaction).then((hash) => {\n return {\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) => { return this.provider.waitForTransaction(hash, confirmations); }\n };\n });\n }\n}\nconst allowedTransactionKeys = {\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};\nexport class JsonRpcProvider extends BaseProvider {\n constructor(url, network) {\n logger.checkNew(new.target, JsonRpcProvider);\n let networkOrReady = network;\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 super(networkOrReady);\n // Default URL\n if (!url) {\n url = getStatic(this.constructor, \"defaultUrl\")();\n }\n if (typeof (url) === \"string\") {\n defineReadOnly(this, \"connection\", Object.freeze({\n url: url\n }));\n }\n else {\n defineReadOnly(this, \"connection\", Object.freeze(shallowCopy(url)));\n }\n this._nextId = 42;\n }\n get _cache() {\n if (this._eventLoopCache == null) {\n this._eventLoopCache = {};\n }\n return this._eventLoopCache;\n }\n static defaultUrl() {\n return \"http:/\\/localhost:8545\";\n }\n detectNetwork() {\n if (!this._cache[\"detectNetwork\"]) {\n this._cache[\"detectNetwork\"] = this._uncachedDetectNetwork();\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 _uncachedDetectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n yield timer(0);\n let chainId = null;\n try {\n chainId = yield this.send(\"eth_chainId\", []);\n }\n catch (error) {\n try {\n chainId = yield this.send(\"net_version\", []);\n }\n catch (error) { }\n }\n if (chainId != null) {\n const getNetwork = getStatic(this.constructor, \"getNetwork\");\n try {\n return getNetwork(BigNumber.from(chainId).toNumber());\n }\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 return logger.throwError(\"could not detect network\", Logger.errors.NETWORK_ERROR, {\n event: \"noNetwork\"\n });\n });\n }\n getSigner(addressOrIndex) {\n return new JsonRpcSigner(_constructorGuard, this, addressOrIndex);\n }\n getUncheckedSigner(addressOrIndex) {\n return this.getSigner(addressOrIndex).connectUnchecked();\n }\n listAccounts() {\n return this.send(\"eth_accounts\", []).then((accounts) => {\n return accounts.map((a) => this.formatter.address(a));\n });\n }\n send(method, params) {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n this.emit(\"debug\", {\n action: \"request\",\n request: deepCopy(request),\n provider: this\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 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 return result;\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n throw error;\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 return result;\n }\n prepareRequest(method, params) {\n switch (method) {\n case \"getBlockNumber\":\n return [\"eth_blockNumber\", []];\n case \"getGasPrice\":\n return [\"eth_gasPrice\", []];\n case \"getBalance\":\n return [\"eth_getBalance\", [getLowerCase(params.address), params.blockTag]];\n case \"getTransactionCount\":\n return [\"eth_getTransactionCount\", [getLowerCase(params.address), params.blockTag]];\n case \"getCode\":\n return [\"eth_getCode\", [getLowerCase(params.address), params.blockTag]];\n case \"getStorageAt\":\n return [\"eth_getStorageAt\", [getLowerCase(params.address), params.position, params.blockTag]];\n case \"sendTransaction\":\n return [\"eth_sendRawTransaction\", [params.signedTransaction]];\n case \"getBlock\":\n if (params.blockTag) {\n return [\"eth_getBlockByNumber\", [params.blockTag, !!params.includeTransactions]];\n }\n else if (params.blockHash) {\n return [\"eth_getBlockByHash\", [params.blockHash, !!params.includeTransactions]];\n }\n return null;\n case \"getTransaction\":\n return [\"eth_getTransactionByHash\", [params.transactionHash]];\n case \"getTransactionReceipt\":\n return [\"eth_getTransactionReceipt\", [params.transactionHash]];\n case \"call\": {\n const hexlifyTransaction = getStatic(this.constructor, \"hexlifyTransaction\");\n return [\"eth_call\", [hexlifyTransaction(params.transaction, { from: true }), params.blockTag]];\n }\n case \"estimateGas\": {\n const hexlifyTransaction = getStatic(this.constructor, \"hexlifyTransaction\");\n return [\"eth_estimateGas\", [hexlifyTransaction(params.transaction, { from: true })]];\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 default:\n break;\n }\n return null;\n }\n perform(method, params) {\n return __awaiter(this, void 0, void 0, function* () {\n // Legacy networks do not like the type field being passed along (which\n // is fair), so we delete type if it is 0 and a non-EIP-1559 network\n if (method === \"call\" || method === \"estimateGas\") {\n const tx = params.transaction;\n if (tx && tx.type != null && BigNumber.from(tx.type).isZero()) {\n // If there are no EIP-1559 properties, it might be non-EIP-a559\n if (tx.maxFeePerGas == null && tx.maxPriorityFeePerGas == null) {\n const feeData = yield this.getFeeData();\n if (feeData.maxFeePerGas == null && feeData.maxPriorityFeePerGas == null) {\n // Network doesn't know about EIP-1559 (and hence type)\n params = shallowCopy(params);\n params.transaction = shallowCopy(tx);\n delete params.transaction.type;\n }\n }\n }\n }\n const args = this.prepareRequest(method, params);\n if (args == null) {\n logger.throwError(method + \" not implemented\", Logger.errors.NOT_IMPLEMENTED, { operation: method });\n }\n try {\n return yield this.send(args[0], args[1]);\n }\n catch (error) {\n return checkError(method, error, params);\n }\n });\n }\n _startEvent(event) {\n if (event.tag === \"pending\") {\n this._startPending();\n }\n super._startEvent(event);\n }\n _startPending() {\n if (this._pendingFilter != null) {\n return;\n }\n const self = this;\n const pendingFilter = this.send(\"eth_newPendingTransactionFilter\", []);\n this._pendingFilter = pendingFilter;\n pendingFilter.then(function (filterId) {\n function poll() {\n self.send(\"eth_getFilterChanges\", [filterId]).then(function (hashes) {\n if (self._pendingFilter != pendingFilter) {\n 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 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 return null;\n }).catch((error) => { });\n }\n poll();\n return filterId;\n }).catch((error) => { });\n }\n _stopEvent(event) {\n if (event.tag === \"pending\" && this.listenerCount(\"pending\") === 0) {\n this._pendingFilter = null;\n }\n super._stopEvent(event);\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, allowExtra) {\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]) {\n allowed[key] = true;\n }\n }\n }\n checkProperties(transaction, allowed);\n const result = {};\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 (transaction[key] == null) {\n return;\n }\n const value = hexValue(transaction[key]);\n if (key === \"gasLimit\") {\n key = \"gas\";\n }\n result[key] = value;\n });\n [\"from\", \"to\", \"data\"].forEach(function (key) {\n if (transaction[key] == null) {\n return;\n }\n result[key] = hexlify(transaction[key]);\n });\n if (transaction.accessList) {\n result[\"accessList\"] = accessListify(transaction.accessList);\n }\n return result;\n }\n}\n//# sourceMappingURL=json-rpc-provider.js.map","\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nlet WS = null;\ntry {\n WS = WebSocket;\n if (WS == null) {\n throw new Error(\"inject please\");\n }\n}\ncatch (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//# sourceMappingURL=ws.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nimport { WebSocket } from \"./ws\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\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 */\nlet NextId = 1;\n// For more info about the Real-time Event API see:\n// https://geth.ethereum.org/docs/rpc/pubsub\nexport class WebSocketProvider extends JsonRpcProvider {\n constructor(url, network) {\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 super(url, network);\n this._pollingInterval = -1;\n this._wsReady = false;\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 // 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 this._websocket.onmessage = (messageEvent) => {\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 if (result.result !== undefined) {\n request.callback(null, result.result);\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 = null;\n if (result.error) {\n error = new Error(result.error.message || \"unknown error\");\n defineReadOnly(error, \"code\", result.error.code || null);\n defineReadOnly(error, \"response\", data);\n }\n else {\n error = new Error(\"unknown error\");\n }\n request.callback(error, undefined);\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: JSON.parse(request.payload),\n provider: this\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 // 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) {\n fauxPoll.unref();\n }\n }\n detectNetwork() {\n return this._detectNetwork;\n }\n get pollingInterval() {\n return 0;\n }\n resetEventsBlock(blockNumber) {\n logger.throwError(\"cannot reset events block on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"resetEventBlock\"\n });\n }\n set pollingInterval(value) {\n logger.throwError(\"cannot set polling interval on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPollingInterval\"\n });\n }\n poll() {\n return __awaiter(this, void 0, void 0, function* () {\n return null;\n });\n }\n set polling(value) {\n if (!value) {\n return;\n }\n logger.throwError(\"cannot set polling on WebSocketProvider\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setPolling\"\n });\n }\n send(method, params) {\n const rid = NextId++;\n return new Promise((resolve, reject) => {\n function callback(error, result) {\n if (error) {\n return reject(error);\n }\n return resolve(result);\n }\n const payload = JSON.stringify({\n method: method,\n params: params,\n id: rid,\n jsonrpc: \"2.0\"\n });\n this.emit(\"debug\", {\n action: \"request\",\n request: JSON.parse(payload),\n provider: this\n });\n this._requests[String(rid)] = { callback, payload };\n if (this._wsReady) {\n this._websocket.send(payload);\n }\n });\n }\n static defaultUrl() {\n return \"ws:/\\/localhost:8546\";\n }\n _subscribe(tag, param, processFunc) {\n return __awaiter(this, void 0, void 0, function* () {\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 = yield subIdPromise;\n this._subs[subId] = { tag, processFunc };\n });\n }\n _startEvent(event) {\n switch (event.type) {\n case \"block\":\n this._subscribe(\"block\", [\"newHeads\"], (result) => {\n const blockNumber = BigNumber.from(result.number).toNumber();\n this._emitted.block = blockNumber;\n this.emit(\"block\", blockNumber);\n });\n break;\n case \"pending\":\n this._subscribe(\"pending\", [\"newPendingTransactions\"], (result) => {\n this.emit(\"pending\", result);\n });\n break;\n case \"filter\":\n this._subscribe(event.tag, [\"logs\", this._getFilter(event.filter)], (result) => {\n if (result.removed == null) {\n result.removed = false;\n }\n this.emit(event.filter, this.formatter.filterLog(result));\n });\n break;\n case \"tx\": {\n const emitReceipt = (event) => {\n const hash = event.hash;\n this.getTransactionReceipt(hash).then((receipt) => {\n if (!receipt) {\n return;\n }\n this.emit(hash, receipt);\n });\n };\n // In case it is already mined\n emitReceipt(event);\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) => {\n this._events.filter((e) => (e.type === \"tx\")).forEach(emitReceipt);\n });\n break;\n }\n // Nothing is needed\n case \"debug\":\n case \"poll\":\n case \"willPoll\":\n case \"didPoll\":\n case \"error\":\n break;\n default:\n console.log(\"unhandled:\", event);\n break;\n }\n }\n _stopEvent(event) {\n let tag = event.tag;\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 }\n else if (this.listenerCount(event.event)) {\n // There are remaining event listeners\n return;\n }\n const subId = this._subIds[tag];\n if (!subId) {\n return;\n }\n delete this._subIds[tag];\n subId.then((subId) => {\n if (!this._subs[subId]) {\n return;\n }\n delete this._subs[subId];\n this.send(\"eth_unsubscribe\", [subId]);\n });\n }\n destroy() {\n return __awaiter(this, void 0, void 0, function* () {\n // Wait until we have connected before trying to disconnect\n if (this._websocket.readyState === WebSocket.CONNECTING) {\n yield (new Promise((resolve) => {\n this._websocket.onopen = function () {\n resolve(true);\n };\n this._websocket.onerror = function () {\n resolve(false);\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//# sourceMappingURL=websocket-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { defineReadOnly, getStatic } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\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 detectNetwork() {\n const _super = Object.create(null, {\n detectNetwork: { get: () => super.detectNetwork }\n });\n return __awaiter(this, void 0, void 0, function* () {\n let network = this.network;\n if (network == null) {\n network = yield _super.detectNetwork.call(this);\n if (!network) {\n logger.throwError(\"no network detected\", Logger.errors.UNKNOWN_ERROR, {});\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 this.emit(\"network\", network, null);\n }\n }\n return network;\n });\n }\n}\nexport class UrlJsonRpcProvider extends StaticJsonRpcProvider {\n constructor(network, apiKey) {\n logger.checkAbstract(new.target, UrlJsonRpcProvider);\n // Normalize the Network and API Key\n network = getStatic((new.target), \"getNetwork\")(network);\n apiKey = getStatic((new.target), \"getApiKey\")(apiKey);\n const connection = getStatic((new.target), \"getUrl\")(network, apiKey);\n super(connection, network);\n if (typeof (apiKey) === \"string\") {\n defineReadOnly(this, \"apiKey\", apiKey);\n }\n else if (apiKey != null) {\n Object.keys(apiKey).forEach((key) => {\n defineReadOnly(this, key, apiKey[key]);\n });\n }\n }\n _startPending() {\n logger.warn(\"WARNING: API provider does not support pending filters\");\n }\n isCommunityResource() {\n return false;\n }\n getSigner(address) {\n return logger.throwError(\"API provider does not support signing\", Logger.errors.UNSUPPORTED_OPERATION, { operation: \"getSigner\" });\n }\n listAccounts() {\n return Promise.resolve([]);\n }\n // Return a defaultApiKey if null, otherwise validate the API key\n static getApiKey(apiKey) {\n return apiKey;\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, apiKey) {\n return logger.throwError(\"not implemented; sub-classes must override getUrl\", Logger.errors.NOT_IMPLEMENTED, {\n operation: \"getUrl\"\n });\n }\n}\n//# sourceMappingURL=url-json-rpc-provider.js.map","\"use strict\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\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\nconst defaultApiKey = \"_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC\";\nexport class AlchemyWebSocketProvider extends WebSocketProvider {\n constructor(network, apiKey) {\n const provider = new AlchemyProvider(network, apiKey);\n const url = provider.connection.url.replace(/^http/i, \"ws\")\n .replace(\".alchemyapi.\", \".ws.alchemyapi.\");\n super(url, provider.network);\n defineReadOnly(this, \"apiKey\", provider.apiKey);\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\nexport class AlchemyProvider extends UrlJsonRpcProvider {\n static getWebSocketProvider(network, apiKey) {\n return new AlchemyWebSocketProvider(network, apiKey);\n }\n static getApiKey(apiKey) {\n if (apiKey == null) {\n return defaultApiKey;\n }\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey;\n }\n static getUrl(network, apiKey) {\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 case \"matic\":\n host = \"polygon-mainnet.g.alchemy.com/v2/\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.g.alchemy.com/v2/\";\n break;\n default:\n logger.throwArgumentError(\"unsupported network\", \"network\", arguments[0]);\n }\n return {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + apiKey),\n throttleCallback: (attempt, url) => {\n if (apiKey === defaultApiKey) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=alchemy-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport class CloudflareProvider extends UrlJsonRpcProvider {\n static getApiKey(apiKey) {\n if (apiKey != null) {\n logger.throwArgumentError(\"apiKey not supported for cloudflare\", \"apiKey\", apiKey);\n }\n return null;\n }\n static getUrl(network, apiKey) {\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 return host;\n }\n perform(method, params) {\n const _super = Object.create(null, {\n perform: { get: () => super.perform }\n });\n return __awaiter(this, void 0, void 0, function* () {\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 = yield _super.perform.call(this, \"getBlock\", { blockTag: \"latest\" });\n return block.number;\n }\n return _super.perform.call(this, method, params);\n });\n }\n}\n//# sourceMappingURL=cloudflare-provider.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { hexlify, hexValue, isHexString } from \"@ethersproject/bytes\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { accessListify } from \"@ethersproject/transactions\";\nimport { fetchJson } from \"@ethersproject/web\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { BaseProvider } from \"./base-provider\";\n// The transaction has already been sanitized by the calls in Provider\nfunction getTransactionPostData(transaction) {\n const result = {};\n for (let key in transaction) {\n if (transaction[key] == null) {\n continue;\n }\n let value = transaction[key];\n if (key === \"type\" && value === 0) {\n continue;\n }\n // Quantity-types require no leading zero, unless 0\n if ({ type: true, gasLimit: true, gasPrice: true, maxFeePerGs: true, maxPriorityFeePerGas: true, nonce: true, value: true }[key]) {\n value = hexValue(hexlify(value));\n }\n else if (key === \"accessList\") {\n value = \"[\" + accessListify(value).map((set) => {\n return `{address:\"${set.address}\",storageKeys:[\"${set.storageKeys.join('\",\"')}\"]}`;\n }).join(\",\") + \"]\";\n }\n else {\n value = hexlify(value);\n }\n result[key] = value;\n }\n return result;\n}\nfunction getResult(result) {\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 if (result.status != 1 || result.message != \"OK\") {\n const error = 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 return result.result;\n}\nfunction getJsonResult(result) {\n // This response indicates we are being throttled\n if (result && result.status == 0 && result.message == \"NOTOK\" && (result.result || \"\").toLowerCase().indexOf(\"rate limit\") >= 0) {\n const error = new Error(\"throttled response\");\n error.result = JSON.stringify(result);\n error.throttleRetry = true;\n throw error;\n }\n if (result.jsonrpc != \"2.0\") {\n // @TODO: not any\n const error = new Error(\"invalid response\");\n error.result = JSON.stringify(result);\n throw error;\n }\n if (result.error) {\n // @TODO: not any\n const error = new Error(result.error.message || \"unknown error\");\n if (result.error.code) {\n error.code = result.error.code;\n }\n if (result.error.data) {\n error.data = result.error.data;\n }\n throw error;\n }\n return result.result;\n}\n// The blockTag was normalized as a string by the Provider pre-perform operations\nfunction checkLogTag(blockTag) {\n if (blockTag === \"pending\") {\n throw new Error(\"pending not supported\");\n }\n if (blockTag === \"latest\") {\n return blockTag;\n }\n return parseInt(blockTag.substring(2), 16);\n}\nconst defaultApiKey = \"9D13ZE7XSBTJ94N9BNJ2MA33VMAY2YPIRB\";\nfunction checkError(method, error, transaction) {\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 // 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) {\n data = \"0x\" + data.replace(/^.*0x/i, \"\");\n }\n if (isHexString(data)) {\n return data;\n }\n logger.throwError(\"missing revert data in call exception\", Logger.errors.CALL_EXCEPTION, {\n error, data: \"0x\"\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 }\n else if (typeof (error.body) === \"string\") {\n message = error.body;\n }\n else if (typeof (error.responseText) === \"string\") {\n message = error.responseText;\n }\n }\n message = (message || \"\").toLowerCase();\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 // \"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 // \"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 if (message.match(/execution failed due to an exception|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 throw error;\n}\nexport class EtherscanProvider extends BaseProvider {\n constructor(network, apiKey) {\n logger.checkNew(new.target, EtherscanProvider);\n super(network);\n defineReadOnly(this, \"baseUrl\", this.getBaseUrl());\n defineReadOnly(this, \"apiKey\", apiKey || defaultApiKey);\n }\n getBaseUrl() {\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 return logger.throwArgumentError(\"unsupported network\", \"network\", name);\n }\n getUrl(module, params) {\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 getPostUrl() {\n return `${this.baseUrl}/api`;\n }\n getPostData(module, params) {\n params.module = module;\n params.apikey = this.apiKey;\n return params;\n }\n fetch(module, params, post) {\n return __awaiter(this, void 0, void 0, function* () {\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 this.emit(\"debug\", {\n action: \"request\",\n request: url,\n provider: this\n });\n const connection = {\n url: url,\n throttleSlotInterval: 1000,\n throttleCallback: (attempt, url) => {\n if (this.isCommunityResource()) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n let payloadStr = 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 const result = yield fetchJson(connection, payloadStr, procFunc || getJsonResult);\n this.emit(\"debug\", {\n action: \"response\",\n request: url,\n response: deepCopy(result),\n provider: this\n });\n return result;\n });\n }\n detectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.network;\n });\n }\n perform(method, params) {\n const _super = Object.create(null, {\n perform: { get: () => super.perform }\n });\n return __awaiter(this, void 0, void 0, function* () {\n switch (method) {\n case \"getBlockNumber\":\n return this.fetch(\"proxy\", { action: \"eth_blockNumber\" });\n case \"getGasPrice\":\n return this.fetch(\"proxy\", { action: \"eth_gasPrice\" });\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 case \"getTransactionCount\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionCount\",\n address: params.address,\n tag: params.blockTag\n });\n case \"getCode\":\n return this.fetch(\"proxy\", {\n action: \"eth_getCode\",\n address: params.address,\n tag: params.blockTag\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 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 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 case \"getTransaction\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionByHash\",\n txhash: params.transactionHash\n });\n case \"getTransactionReceipt\":\n return this.fetch(\"proxy\", {\n action: \"eth_getTransactionReceipt\",\n txhash: params.transactionHash\n });\n case \"call\": {\n if (params.blockTag !== \"latest\") {\n throw new Error(\"EtherscanProvider does not support blockTag for call\");\n }\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_call\";\n try {\n return yield this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return checkError(\"call\", error, params.transaction);\n }\n }\n case \"estimateGas\": {\n const postData = getTransactionPostData(params.transaction);\n postData.module = \"proxy\";\n postData.action = \"eth_estimateGas\";\n try {\n return yield this.fetch(\"proxy\", postData, true);\n }\n catch (error) {\n return checkError(\"estimateGas\", error, params.transaction);\n }\n }\n case \"getLogs\": {\n const args = { action: \"getLogs\" };\n if (params.filter.fromBlock) {\n args.fromBlock = checkLogTag(params.filter.fromBlock);\n }\n if (params.filter.toBlock) {\n args.toBlock = checkLogTag(params.filter.toBlock);\n }\n if (params.filter.address) {\n args.address = params.filter.address;\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 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 const logs = yield this.fetch(\"logs\", args);\n // Cache txHash => blockHash\n let blocks = {};\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) {\n continue;\n }\n if (blocks[log.blockNumber] == null) {\n const block = yield this.getBlock(log.blockNumber);\n if (block) {\n blocks[log.blockNumber] = block.hash;\n }\n }\n log.blockHash = blocks[log.blockNumber];\n }\n return logs;\n }\n case \"getEtherPrice\":\n if (this.network.name !== \"homestead\") {\n return 0.0;\n }\n return parseFloat((yield this.fetch(\"stats\", { action: \"ethprice\" })).ethusd);\n default:\n break;\n }\n return _super.perform.call(this, 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 getHistory(addressOrName, startBlock, endBlock) {\n return __awaiter(this, void 0, void 0, function* () {\n const params = {\n action: \"txlist\",\n address: (yield this.resolveName(addressOrName)),\n startblock: ((startBlock == null) ? 0 : startBlock),\n endblock: ((endBlock == null) ? 99999999 : endBlock),\n sort: \"asc\"\n };\n const result = yield this.fetch(\"account\", params);\n return result.map((tx) => {\n [\"contractAddress\", \"to\"].forEach(function (key) {\n if (tx[key] == \"\") {\n delete tx[key];\n }\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) {\n item.timestamp = parseInt(tx.timeStamp);\n }\n return item;\n });\n });\n }\n isCommunityResource() {\n return (this.apiKey === defaultApiKey);\n }\n}\n//# sourceMappingURL=etherscan-provider.js.map","\"use strict\";\nexport function shuffled(array) {\n array = array.slice();\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 return array;\n}\n//# sourceMappingURL=shuffle.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport { isHexString } from \"@ethersproject/bytes\";\nimport { deepCopy, defineReadOnly, shallowCopy } from \"@ethersproject/properties\";\nimport { shuffled } from \"@ethersproject/random\";\nimport { poll } from \"@ethersproject/web\";\nimport { BaseProvider } from \"./base-provider\";\nimport { isCommunityResource } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nfunction now() { return (new Date()).getTime(); }\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) {\n let result = null;\n for (let i = 0; i < networks.length; i++) {\n const network = networks[i];\n // Null! We do not know our network; bail.\n if (network == null) {\n 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 logger.throwArgumentError(\"provider mismatch\", \"networks\", networks);\n }\n }\n else {\n result = network;\n }\n }\n return result;\n}\nfunction median(values, maxDelta) {\n values = values.slice().sort();\n const middle = Math.floor(values.length / 2);\n // Odd length; take the middle\n if (values.length % 2) {\n return values[middle];\n }\n // Even length; take the average of the two middle\n const a = values[middle - 1], b = values[middle];\n if (maxDelta != null && Math.abs(a - b) > maxDelta) {\n return null;\n }\n return (a + b) / 2;\n}\nfunction serialize(value) {\n if (value === null) {\n return \"null\";\n }\n else if (typeof (value) === \"number\" || typeof (value) === \"boolean\") {\n return JSON.stringify(value);\n }\n else if (typeof (value) === \"string\") {\n return value;\n }\n else if (BigNumber.isBigNumber(value)) {\n return value.toString();\n }\n else if (Array.isArray(value)) {\n return JSON.stringify(value.map((i) => serialize(i)));\n }\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 }\n else {\n v = serialize(v);\n }\n return JSON.stringify(key) + \":\" + v;\n }).join(\",\") + \"}\";\n }\n throw new Error(\"unknown value type: \" + typeof (value));\n}\n// Next request ID to use for emitting debug info\nlet nextRid = 1;\n;\nfunction stall(duration) {\n let cancel = null;\n let timer = null;\n let promise = (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 const wait = (func) => {\n promise = promise.then(func);\n return promise;\n };\n function getPromise() {\n return promise;\n }\n return { cancel, getPromise, wait };\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];\nconst ForwardProperties = [\n \"address\",\n \"args\",\n \"errorArgs\",\n \"errorSignature\",\n \"method\",\n \"transaction\",\n];\n;\nfunction exposeDebugConfig(config, now) {\n const result = {\n weight: config.weight\n };\n Object.defineProperty(result, \"provider\", { get: () => config.provider });\n if (config.start) {\n result.start = config.start;\n }\n if (now) {\n result.duration = (now - config.start);\n }\n if (config.done) {\n if (config.error) {\n result.error = config.error;\n }\n else {\n result.result = config.result || null;\n }\n }\n return result;\n}\nfunction normalizedTally(normalize, quorum) {\n return function (configs) {\n // Count the votes for each result\n const tally = {};\n configs.forEach((c) => {\n const value = normalize(c.result);\n if (!tally[value]) {\n tally[value] = { count: 0, result: c.result };\n }\n tally[value].count++;\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 // No quroum\n return undefined;\n };\n}\nfunction getProcessFunc(provider, method, params) {\n let normalize = serialize;\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) {\n const values = configs.map((c) => c.result);\n // Get the median block number\n let blockNumber = median(configs.map((c) => c.result), 2);\n if (blockNumber == null) {\n return undefined;\n }\n blockNumber = Math.ceil(blockNumber);\n // If the next block height is present, its prolly safe to use\n if (values.indexOf(blockNumber + 1) >= 0) {\n blockNumber++;\n }\n // Don't ever roll back the blockNumber\n if (blockNumber >= provider._highestBlockNumber) {\n provider._highestBlockNumber = blockNumber;\n }\n return provider._highestBlockNumber;\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) {\n const values = configs.map((c) => c.result);\n values.sort();\n return values[Math.floor(values.length / 2)];\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) {\n return median(configs.map((c) => c.result));\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 // We drop the confirmations from transactions as it is approximate\n case \"getTransaction\":\n case \"getTransactionReceipt\":\n normalize = function (tx) {\n if (tx == null) {\n return null;\n }\n tx = shallowCopy(tx);\n tx.confirmations = -1;\n return serialize(tx);\n };\n break;\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) {\n if (block == null) {\n 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 }\n else {\n normalize = function (block) {\n if (block == null) {\n return null;\n }\n return serialize(block);\n };\n }\n break;\n default:\n throw new Error(\"unknown method: \" + method);\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// 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.\nfunction waitForSync(config, blockNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n const provider = (config.provider);\n if ((provider.blockNumber != null && provider.blockNumber >= blockNumber) || blockNumber === -1) {\n return provider;\n }\n return poll(() => {\n return new Promise((resolve, reject) => {\n setTimeout(function () {\n // We are synced\n if (provider.blockNumber >= blockNumber) {\n return resolve(provider);\n }\n // We're done; just quit\n if (config.cancelled) {\n return resolve(null);\n }\n // Try again, next block\n return resolve(undefined);\n }, 0);\n });\n }, { oncePoll: provider });\n });\n}\nfunction getRunner(config, currentBlockNumber, method, params) {\n return __awaiter(this, void 0, void 0, function* () {\n let provider = config.provider;\n switch (method) {\n case \"getBlockNumber\":\n case \"getGasPrice\":\n return provider[method]();\n case \"getEtherPrice\":\n if (provider.getEtherPrice) {\n return provider.getEtherPrice();\n }\n break;\n case \"getBalance\":\n case \"getTransactionCount\":\n case \"getCode\":\n if (params.blockTag && isHexString(params.blockTag)) {\n provider = yield 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 = yield 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 = yield 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 = yield 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 = yield waitForSync(config, currentBlockNumber);\n }\n return provider.getLogs(filter);\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 constructor(providers, quorum) {\n logger.checkNew(new.target, FallbackProvider);\n if (providers.length === 0) {\n logger.throwArgumentError(\"missing providers\", \"providers\", providers);\n }\n const providerConfigs = 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 const config = shallowCopy(configOrProvider);\n if (config.priority == null) {\n config.priority = 1;\n }\n if (config.stallTimeout == null) {\n config.stallTimeout = isCommunityResource(configOrProvider) ? 2000 : 750;\n }\n if (config.weight == null) {\n 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 return Object.freeze(config);\n });\n const total = providerConfigs.reduce((accum, c) => (accum + c.weight), 0);\n if (quorum == null) {\n quorum = total / 2;\n }\n else if (quorum > total) {\n logger.throwArgumentError(\"quorum will always fail; larger than total weight\", \"quorum\", quorum);\n }\n // Are all providers' networks are known\n let networkOrReady = checkNetworks(providerConfigs.map((c) => (c.provider).network));\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 super(networkOrReady);\n // Preserve a copy, so we do not get mutated\n defineReadOnly(this, \"providerConfigs\", Object.freeze(providerConfigs));\n defineReadOnly(this, \"quorum\", quorum);\n this._highestBlockNumber = -1;\n }\n detectNetwork() {\n return __awaiter(this, void 0, void 0, function* () {\n const networks = yield Promise.all(this.providerConfigs.map((c) => c.provider.getNetwork()));\n return checkNetworks(networks);\n });\n }\n perform(method, params) {\n return __awaiter(this, void 0, void 0, function* () {\n // Sending transactions is special; always broadcast it to all backends\n if (method === \"sendTransaction\") {\n const results = yield 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 // 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\") {\n return result;\n }\n }\n // They were all an error; pick the first error\n throw results[0];\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 yield this.getBlockNumber();\n }\n const processFunc = getProcessFunc(this, method, params);\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 = shuffled(this.providerConfigs.map(shallowCopy));\n configs.sort((a, b) => (a.priority - b.priority));\n const currentBlockNumber = this._highestBlockNumber;\n let i = 0;\n let first = true;\n while (true) {\n const t0 = now();\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 // Start running enough to meet quorum\n while (inflightWeight < this.quorum && i < configs.length) {\n const config = configs[i++];\n const rid = nextRid++;\n config.start = now();\n config.staller = stall(config.stallTimeout);\n config.staller.wait(() => { config.staller = null; });\n config.runner = getRunner(config, currentBlockNumber, method, params).then((result) => {\n config.done = true;\n config.result = result;\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 }, (error) => {\n config.done = true;\n config.error = error;\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 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 inflightWeight += config.weight;\n }\n // Wait for anything meaningful to finish or stall out\n const waiting = [];\n configs.forEach((c) => {\n if (c.done || !c.runner) {\n return;\n }\n waiting.push(c.runner);\n if (c.staller) {\n waiting.push(c.staller.getPromise());\n }\n });\n if (waiting.length) {\n yield 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) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n return result;\n }\n if (!first) {\n yield stall(100).getPromise();\n }\n first = false;\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) {\n return accum;\n }\n const code = (c.error).code;\n if (ForwardErrors.indexOf(code) >= 0) {\n if (!accum[code]) {\n accum[code] = { error: c.error, weight: 0 };\n }\n accum[code].weight += c.weight;\n }\n return accum;\n }, ({}));\n Object.keys(errors).forEach((errorCode) => {\n const tally = errors[errorCode];\n if (tally.weight < this.quorum) {\n return;\n }\n // Shut down any stallers\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\n });\n const e = (tally.error);\n const props = {};\n ForwardProperties.forEach((name) => {\n if (e[name] == null) {\n return;\n }\n props[name] = e[name];\n });\n logger.throwError(e.reason || e.message, errorCode, props);\n });\n // All configs have run to completion; we will never get more data\n if (configs.filter((c) => !c.done).length === 0) {\n break;\n }\n }\n // Shut down any stallers; shouldn't be any\n configs.forEach(c => {\n if (c.staller) {\n c.staller.cancel();\n }\n c.cancelled = true;\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}\n//# sourceMappingURL=fallback-provider.js.map","\"use strict\";\nconst IpcProvider = null;\nexport { IpcProvider };\n//# sourceMappingURL=ipc-provider.js.map","\"use strict\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\nimport { WebSocketProvider } from \"./websocket-provider\";\nimport { showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nconst defaultProjectId = \"84842078b09946638c03157f83405213\";\nexport class InfuraWebSocketProvider extends WebSocketProvider {\n constructor(network, apiKey) {\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 const url = connection.url.replace(/^http/i, \"ws\").replace(\"/v3/\", \"/ws/v3/\");\n super(url, network);\n defineReadOnly(this, \"apiKey\", provider.projectId);\n defineReadOnly(this, \"projectId\", provider.projectId);\n defineReadOnly(this, \"projectSecret\", provider.projectSecret);\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\nexport class InfuraProvider extends UrlJsonRpcProvider {\n static getWebSocketProvider(network, apiKey) {\n return new InfuraWebSocketProvider(network, apiKey);\n }\n static getApiKey(apiKey) {\n const apiKeyObj = {\n apiKey: defaultProjectId,\n projectId: defaultProjectId,\n projectSecret: null\n };\n if (apiKey == null) {\n 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\"), \"projectSecret requires a projectId\", \"projectId\", apiKey.projectId);\n logger.assertArgument((typeof (apiKey.projectSecret) === \"string\"), \"invalid projectSecret\", \"projectSecret\", \"[REDACTED]\");\n apiKeyObj.projectId = apiKey.projectId;\n apiKeyObj.projectSecret = apiKey.projectSecret;\n }\n else if (apiKey.projectId) {\n apiKeyObj.projectId = apiKey.projectId;\n }\n apiKeyObj.apiKey = apiKeyObj.projectId;\n return apiKeyObj;\n }\n static getUrl(network, apiKey) {\n let host = 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 case \"matic\":\n host = \"polygon-mainnet.infura.io\";\n break;\n case \"maticmum\":\n host = \"polygon-mumbai.infura.io\";\n break;\n default:\n logger.throwError(\"unsupported network\", Logger.errors.INVALID_ARGUMENT, {\n argument: \"network\",\n value: network\n });\n }\n const connection = {\n allowGzip: true,\n url: (\"https:/\" + \"/\" + host + \"/v3/\" + apiKey.projectId),\n throttleCallback: (attempt, url) => {\n if (apiKey.projectId === defaultProjectId) {\n showThrottleMessage();\n }\n return Promise.resolve(true);\n }\n };\n if (apiKey.projectSecret != null) {\n connection.user = \"\";\n connection.password = apiKey.projectSecret;\n }\n return connection;\n }\n isCommunityResource() {\n return (this.projectId === defaultProjectId);\n }\n}\n//# sourceMappingURL=infura-provider.js.map","import { deepCopy } from \"@ethersproject/properties\";\nimport { fetchJson } from \"@ethersproject/web\";\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\n// Experimental\nexport class JsonRpcBatchProvider extends JsonRpcProvider {\n send(method, params) {\n const request = {\n method: method,\n params: params,\n id: (this._nextId++),\n jsonrpc: \"2.0\"\n };\n if (this._pendingBatch == null) {\n this._pendingBatch = [];\n }\n const inflightRequest = { request, resolve: null, reject: null };\n const promise = new Promise((resolve, reject) => {\n inflightRequest.resolve = resolve;\n inflightRequest.reject = reject;\n });\n this._pendingBatch.push(inflightRequest);\n if (!this._pendingBatchAggregator) {\n // Schedule batch for next event loop + short duration\n this._pendingBatchAggregator = setTimeout(() => {\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 // Get the request as an array of requests\n const request = batch.map((inflight) => inflight.request);\n this.emit(\"debug\", {\n action: \"requestBatch\",\n request: deepCopy(request),\n provider: this\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 // 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 error.code = payload.error.code;\n error.data = payload.error.data;\n inflightRequest.reject(error);\n }\n else {\n inflightRequest.resolve(payload.result);\n }\n });\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n error: error,\n request: request,\n provider: this\n });\n batch.forEach((inflightRequest) => {\n inflightRequest.reject(error);\n });\n });\n }, 10);\n }\n return promise;\n }\n}\n//# sourceMappingURL=json-rpc-batch-provider.js.map","/* istanbul ignore file */\n\"use strict\";\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n// Special API key provided by Nodesmith for ethers.js\nconst defaultApiKey = \"ETHERS_JS_SHARED\";\nexport class NodesmithProvider extends UrlJsonRpcProvider {\n static getApiKey(apiKey) {\n if (apiKey && typeof (apiKey) !== \"string\") {\n logger.throwArgumentError(\"invalid apiKey\", \"apiKey\", apiKey);\n }\n return apiKey || defaultApiKey;\n }\n static getUrl(network, apiKey) {\n logger.warn(\"NodeSmith will be discontinued on 2019-12-20; please migrate to another platform.\");\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 return (host + \"?apiKey=\" + apiKey);\n }\n}\n//# sourceMappingURL=nodesmith-provider.js.map","\"use strict\";\nimport { getStatic } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { UrlJsonRpcProvider } from \"./url-json-rpc-provider\";\n// These are load-balancer-based applicatoin IDs\nconst defaultApplicationIds = {\n homestead: \"6004bcd10040261633ade990\",\n ropsten: \"6004bd4d0040261633ade991\",\n rinkeby: \"6004bda20040261633ade994\",\n goerli: \"6004bd860040261633ade992\",\n};\nexport class PocketProvider extends UrlJsonRpcProvider {\n constructor(network, apiKey) {\n // We need a bit of creativity in the constructor because\n // Pocket uses different default API keys based on the network\n if (apiKey == null) {\n const n = getStatic((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 // 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 super(network, apiKey);\n }\n static getApiKey(apiKey) {\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 if (apiKey == null) {\n logger.throwArgumentError(\"PocketProvider.getApiKey does not support null apiKey\", \"apiKey\", apiKey);\n }\n const apiKeyObj = {\n applicationId: null,\n loadBalancer: false,\n applicationSecretKey: null\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\"), \"applicationSecretKey requires an applicationId\", \"applicationId\", apiKey.applicationId);\n logger.assertArgument((typeof (apiKey.applicationSecretKey) === \"string\"), \"invalid applicationSecretKey\", \"applicationSecretKey\", \"[REDACTED]\");\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\"), \"apiKey.applicationId must be a string\", \"apiKey.applicationId\", apiKey.applicationId);\n apiKeyObj.applicationId = apiKey.applicationId;\n apiKeyObj.loadBalancer = !!apiKey.loadBalancer;\n }\n else {\n logger.throwArgumentError(\"unsupported PocketProvider apiKey\", \"apiKey\", apiKey);\n }\n return apiKeyObj;\n }\n static getUrl(network, apiKey) {\n let host = 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 let url = null;\n if (apiKey.loadBalancer) {\n url = `https:/\\/${host}/v1/lb/${apiKey.applicationId}`;\n }\n else {\n url = `https:/\\/${host}/v1/${apiKey.applicationId}`;\n }\n const connection = { url };\n // Initialize empty headers\n connection.headers = {};\n // Apply application secret key\n if (apiKey.applicationSecretKey != null) {\n connection.user = \"\";\n connection.password = apiKey.applicationSecretKey;\n }\n return connection;\n }\n isCommunityResource() {\n return (this.applicationId === defaultApplicationIds[this.network.name]);\n }\n}\n//# sourceMappingURL=pocket-provider.js.map","\"use strict\";\nimport { deepCopy, defineReadOnly } from \"@ethersproject/properties\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nimport { JsonRpcProvider } from \"./json-rpc-provider\";\nlet _nextId = 1;\nfunction buildWeb3LegacyFetcher(provider, sendFunc) {\n const fetcher = \"Web3LegacyFetcher\";\n return function (method, params) {\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 const request = {\n method: method,\n params: params,\n id: (_nextId++),\n jsonrpc: \"2.0\"\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 sendFunc(request, (error, response) => {\n if (error) {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n error,\n request,\n provider: this\n });\n return reject(error);\n }\n this.emit(\"debug\", {\n action: \"response\",\n fetcher,\n request,\n response,\n provider: this\n });\n if (response.error) {\n const error = new Error(response.error.message);\n error.code = response.error.code;\n error.data = response.error.data;\n return reject(error);\n }\n resolve(response.result);\n });\n });\n };\n}\nfunction buildEip1193Fetcher(provider) {\n return function (method, params) {\n if (params == null) {\n 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 const request = { method, params };\n this.emit(\"debug\", {\n action: \"request\",\n fetcher: \"Eip1193Fetcher\",\n request: deepCopy(request),\n provider: this\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 return response;\n }, (error) => {\n this.emit(\"debug\", {\n action: \"response\",\n fetcher: \"Eip1193Fetcher\",\n request,\n error,\n provider: this\n });\n throw error;\n });\n };\n}\nexport class Web3Provider extends JsonRpcProvider {\n constructor(provider, network) {\n logger.checkNew(new.target, Web3Provider);\n if (provider == null) {\n logger.throwArgumentError(\"missing provider\", \"provider\", provider);\n }\n let path = null;\n let jsonRpcFetchFunc = null;\n let subprovider = null;\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 subprovider = provider;\n if (provider.request) {\n if (path === \"\") {\n path = \"eip-1193:\";\n }\n jsonRpcFetchFunc = buildEip1193Fetcher(provider);\n }\n else if (provider.sendAsync) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.sendAsync.bind(provider));\n }\n else if (provider.send) {\n jsonRpcFetchFunc = buildWeb3LegacyFetcher(provider, provider.send.bind(provider));\n }\n else {\n logger.throwArgumentError(\"unsupported provider\", \"provider\", provider);\n }\n if (!path) {\n path = \"unknown:\";\n }\n }\n super(path, network);\n defineReadOnly(this, \"jsonRpcFetchFunc\", jsonRpcFetchFunc);\n defineReadOnly(this, \"provider\", subprovider);\n }\n send(method, params) {\n return this.jsonRpcFetchFunc(method, params);\n }\n}\n//# sourceMappingURL=web3-provider.js.map","\"use strict\";\nimport { Provider } from \"@ethersproject/abstract-provider\";\nimport { getNetwork } from \"@ethersproject/networks\";\nimport { BaseProvider, Resolver } from \"./base-provider\";\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 { Formatter, isCommunityResourcable, isCommunityResource, showThrottleMessage } from \"./formatter\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n////////////////////////\n// Helper Functions\nfunction getDefaultProvider(network, options) {\n if (network == null) {\n 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 // 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 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 return n._defaultProvider({\n FallbackProvider,\n AlchemyProvider,\n CloudflareProvider,\n EtherscanProvider,\n InfuraProvider,\n JsonRpcProvider,\n NodesmithProvider,\n PocketProvider,\n Web3Provider,\n IpcProvider,\n }, options);\n}\n////////////////////////\n// Exports\nexport { \n// Abstract Providers (or Abstract-ish)\nProvider, BaseProvider, Resolver, UrlJsonRpcProvider, \n///////////////////////\n// Concreate Providers\nFallbackProvider, AlchemyProvider, AlchemyWebSocketProvider, CloudflareProvider, EtherscanProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, JsonRpcBatchProvider, NodesmithProvider, PocketProvider, StaticJsonRpcProvider, Web3Provider, WebSocketProvider, IpcProvider, \n///////////////////////\n// Signer\nJsonRpcSigner, \n///////////////////////\n// Functions\ngetDefaultProvider, getNetwork, isCommunityResource, isCommunityResourcable, showThrottleMessage, \n///////////////////////\n// Objects\nFormatter };\n//# sourceMappingURL=index.js.map","\"use strict\";\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\";\nconst regexBytes = new RegExp(\"^bytes([0-9]+)$\");\nconst regexNumber = new RegExp(\"^(u?int)([0-9]*)$\");\nconst regexArray = new RegExp(\"^(.*)\\\\[([0-9]*)\\\\]$\");\nconst Zeros = \"0000000000000000000000000000000000000000000000000000000000000000\";\nfunction _pack(type, value, isArray) {\n switch (type) {\n case \"address\":\n if (isArray) {\n return zeroPad(value, 32);\n }\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) {\n return zeroPad(value, 32);\n }\n return arrayify(value);\n }\n let match = type.match(regexNumber);\n if (match) {\n //let signed = (match[1] === \"int\")\n let size = parseInt(match[2] || \"256\");\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 if (isArray) {\n size = 256;\n }\n value = BigNumber.from(value).toTwos(size);\n return zeroPad(value, size / 8);\n }\n match = type.match(regexBytes);\n if (match) {\n const size = parseInt(match[1]);\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) {\n throw new Error(\"invalid value for \" + type);\n }\n if (isArray) {\n return arrayify((value + Zeros).substring(0, 66));\n }\n return value;\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) {\n throw new Error(\"invalid value for \" + type);\n }\n const result = [];\n value.forEach(function (value) {\n result.push(_pack(baseType, value, true));\n });\n return concat(result);\n }\n throw new Error(\"invalid type - \" + type);\n}\n// @TODO: Array Enum\nexport function pack(types, values) {\n if (types.length != values.length) {\n throw new Error(\"type/value count mismatch\");\n }\n const tight = [];\n types.forEach(function (type, index) {\n tight.push(_pack(type, values[index]));\n });\n return hexlify(concat(tight));\n}\nexport function keccak256(types, values) {\n return hashKeccak256(pack(types, values));\n}\nexport function sha256(types, values) {\n return hashSha256(pack(types, values));\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nimport { HashZero } from \"@ethersproject/constants\";\nimport { arrayify, concat, hexlify } from \"@ethersproject/bytes\";\nimport { toUtf8Bytes, toUtf8String } from \"./utf8\";\nexport function formatBytes32String(text) {\n // Get the bytes\n const bytes = toUtf8Bytes(text);\n // Check we have room for null-termination\n if (bytes.length > 31) {\n 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}\nexport function parseBytes32String(bytes) {\n const data = arrayify(bytes);\n // Must be 32 bytes with a null-termination\n if (data.length !== 32) {\n throw new Error(\"invalid bytes32 - not 32 bytes long\");\n }\n if (data[31] !== 0) {\n 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) {\n length--;\n }\n // Determine the string value\n return toUtf8String(data.slice(0, length));\n}\n//# sourceMappingURL=bytes32.js.map","export const version = \"units/5.4.0\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { formatFixed, parseFixed } from \"@ethersproject/bignumber\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nconst names = [\n \"wei\",\n \"kwei\",\n \"mwei\",\n \"gwei\",\n \"szabo\",\n \"finney\",\n \"ether\",\n];\n// Some environments have issues with RegEx that contain back-tracking, so we cannot\n// use them.\nexport function commify(value) {\n const comps = String(value).split(\".\");\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 // Make sure we have at least one whole digit (0 if none)\n let whole = comps[0];\n let negative = \"\";\n if (whole.substring(0, 1) === \"-\") {\n negative = \"-\";\n whole = whole.substring(1);\n }\n // Make sure we have at least 1 whole digit with no leading zeros\n while (whole.substring(0, 1) === \"0\") {\n whole = whole.substring(1);\n }\n if (whole === \"\") {\n whole = \"0\";\n }\n let suffix = \"\";\n if (comps.length === 2) {\n suffix = \".\" + (comps[1] || \"0\");\n }\n while (suffix.length > 2 && suffix[suffix.length - 1] === \"0\") {\n suffix = suffix.substring(0, suffix.length - 1);\n }\n const formatted = [];\n while (whole.length) {\n if (whole.length <= 3) {\n formatted.unshift(whole);\n break;\n }\n else {\n const index = whole.length - 3;\n formatted.unshift(whole.substring(index));\n whole = whole.substring(0, index);\n }\n }\n return negative + formatted.join(\",\") + suffix;\n}\nexport function formatUnits(value, unitName) {\n if (typeof (unitName) === \"string\") {\n const index = names.indexOf(unitName);\n if (index !== -1) {\n unitName = 3 * index;\n }\n }\n return formatFixed(value, (unitName != null) ? unitName : 18);\n}\nexport function parseUnits(value, unitName) {\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) {\n unitName = 3 * index;\n }\n }\n return parseFixed(value, (unitName != null) ? unitName : 18);\n}\nexport function formatEther(wei) {\n return formatUnits(wei, 18);\n}\nexport function parseEther(ether) {\n return parseUnits(ether, 18);\n}\n//# sourceMappingURL=index.js.map","export const version = \"ethers/5.4.6\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nimport { BaseContract, Contract, ContractFactory } from \"@ethersproject/contracts\";\nimport { BigNumber, FixedNumber } from \"@ethersproject/bignumber\";\nimport { Signer, VoidSigner } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\nimport * as constants from \"@ethersproject/constants\";\nimport * as providers from \"@ethersproject/providers\";\nimport { getDefaultProvider } from \"@ethersproject/providers\";\nimport { Wordlist, wordlists } from \"@ethersproject/wordlists\";\nimport * as utils from \"./utils\";\nimport { ErrorCode as errors, Logger } from \"@ethersproject/logger\";\n////////////////////////\n// Compile-Time Constants\n// This is generated by \"npm run dist\"\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n////////////////////////\n// Exports\nexport { Signer, Wallet, VoidSigner, getDefaultProvider, providers, BaseContract, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, \n////////////////////////\n// Compile-Time Constants\nversion, Wordlist };\n//# sourceMappingURL=ethers.js.map","\"use strict\";\n// To modify this file, you must update ./misc/admin/lib/cmds/update-exports.js\nimport * as ethers from \"./ethers\";\ntry {\n const anyGlobal = window;\n if (anyGlobal._ethers == null) {\n anyGlobal._ethers = ethers;\n }\n}\ncatch (error) { }\nexport { ethers };\nexport { Signer, Wallet, VoidSigner, getDefaultProvider, providers, BaseContract, Contract, ContractFactory, BigNumber, FixedNumber, constants, errors, logger, utils, wordlists, \n////////////////////////\n// Compile-Time Constants\nversion, Wordlist } from \"./ethers\";\n//# sourceMappingURL=index.js.map","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = input[TO_PRIMITIVE];\n var result;\n if (exoticToPrim !== undefined) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","import BN from 'bn.js';\nimport hash from 'hash.js';\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, basedir, module) {\n\treturn module = {\n\t\tpath: basedir,\n\t\texports: {},\n\t\trequire: function (path, base) {\n\t\t\treturn commonjsRequire(path, (base === undefined || base === null) ? module.path : base);\n\t\t}\n\t}, fn(module, module.exports), module.exports;\n}\n\nfunction getDefaultExportFromNamespaceIfPresent (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') ? n['default'] : n;\n}\n\nfunction getDefaultExportFromNamespaceIfNotNamed (n) {\n\treturn n && Object.prototype.hasOwnProperty.call(n, 'default') && Object.keys(n).length === 1 ? n['default'] : n;\n}\n\nfunction getAugmentedNamespace(n) {\n\tif (n.__esModule) return n;\n\tvar a = Object.defineProperty({}, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar minimalisticAssert = 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\nvar utils_1 = createCommonjsModule(function (module, exports) {\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});\n\nvar utils_1$1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar utils = exports;\n\n\n\n\nutils.assert = minimalisticAssert;\nutils.toArray = utils_1.toArray;\nutils.zero2 = utils_1.zero2;\nutils.toHex = utils_1.toHex;\nutils.encode = utils_1.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\n'use strict';\n\n\n\nvar getNAF = utils_1$1.getNAF;\nvar getJSF = utils_1$1.getJSF;\nvar assert$1 = utils_1$1.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}\nvar base = 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$1(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$1(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_1$1.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$1(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert$1(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_1$1.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\nvar inherits_browser = createCommonjsModule(function (module) {\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}\n});\n\n'use strict';\n\n\n\n\n\n\nvar assert$2 = utils_1$1.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_browser(ShortCurve, base);\nvar short_1 = 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$2(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_browser(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 '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\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_browser(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 '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nvar curve_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curve = exports;\n\ncurve.base = base;\ncurve.short = short_1;\ncurve.mont = /*RicMoo:ethers:require(./mont)*/(null);\ncurve.edwards = /*RicMoo:ethers:require(./edwards)*/(null);\n});\n\nvar curves_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar curves = exports;\n\n\n\n\n\nvar assert = utils_1$1.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve_1.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve_1.edwards(options);\n else\n this.curve = new curve_1.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 = /*RicMoo:ethers:require(./precomputed/secp256k1)*/(null).crash();\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});\n\n'use strict';\n\n\n\n\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_1.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils_1.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils_1.toArray(options.pers, options.persEnc || 'hex');\n minimalisticAssert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nvar hmacDrbg = 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_1.toArray(entropy, entropyEnc);\n add = utils_1.toArray(add, addEnc);\n\n minimalisticAssert(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_1.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_1.encode(res, enc);\n};\n\n'use strict';\n\n\n\nvar assert$3 = utils_1$1.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}\nvar key = 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$3(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert$3(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$3(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 '';\n};\n\n'use strict';\n\n\n\n\nvar assert$4 = utils_1$1.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$4(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}\nvar signature = 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_1$1.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_1$1.encode(res, enc);\n};\n\n'use strict';\n\n\n\n\n\nvar rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nvar assert$5 = utils_1$1.assert;\n\n\n\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$5(Object.prototype.hasOwnProperty.call(curves_1, options),\n 'Unknown curve ' + options);\n\n options = curves_1[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves_1.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}\nvar ec = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new key(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return key.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return key.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$1, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature$1 = new signature(signature$1, 'hex');\n\n // Perform primitive values validation\n var r = signature$1.r;\n var s = signature$1.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$1, j, enc) {\n assert$5((3 & j) === j, 'The recovery param is more than two bits');\n signature$1 = new signature(signature$1, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature$1.r;\n var s = signature$1.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$1.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$1, Q, enc) {\n signature$1 = new signature(signature$1, enc);\n if (signature$1.recoveryParam !== null)\n return signature$1.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature$1, 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\nvar elliptic_1 = createCommonjsModule(function (module, exports) {\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = /*RicMoo:ethers*/{ version: \"6.5.4\" }.version;\nelliptic.utils = utils_1$1;\nelliptic.rand = /*RicMoo:ethers:require(brorand)*/(function() { throw new Error('unsupported'); });\nelliptic.curve = curve_1;\nelliptic.curves = curves_1;\n\n// Protocols\nelliptic.ec = ec;\nelliptic.eddsa = /*RicMoo:ethers:require(./elliptic/eddsa)*/(null);\n});\n\nvar EC$1 = elliptic_1.ec;\n\nexport { EC$1 as EC };\n//# sourceMappingURL=browser-elliptic.js.map\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","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","module.exports = {};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return typeof $Symbol == 'function' && Object(it) instanceof $Symbol;\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","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var nativeSymbol = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = nativeSymbol ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","import{computed as n,reactive as e,watch as r,getCurrentInstance as t,onBeforeUnmount as i}from\"vue\";import u from\"caf\";function c(){return(c=Object.assign||function(n){for(var e=1;en.length)&&(e=n.length);for(var r=0,t=new Array(e);r=n.length?{done:!0}:{done:!1,value:n[e++]}};throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(e=n[Symbol.iterator]()).next.bind(e)}function a(n){return new Promise(function(e){var t=r(n,function(n){null!=n&&(e(n),t&&t())},{immediate:!0})})}var f=function(n){return n._runningInstances.length>=n._maxConcurrency},l=function(n){var e=n._activeInstances[0];e&&e.cancel()},p=function(n){n._enqueuedInstances.forEach(function(n){n.isEnqueued=!1,n.isDropped=!0})};function d(e,r){return r?function(e,r,t){return n(function(){return e().filter(function(n){return n[r]})})}(function(){return e()._instances},r):n(function(){return[]})}function _(e){return n(function(){return e().length})}function v(e){return n(function(){var n=e();return n[n.length-1]})}function g(e){return n(function(){return e()[0]})}function m(n){return e(n)}function h(n){var e=\"General\";n._isDropping&&(e=\"Drop\"),n._isEnqueuing&&(e=\"Enqueue\"),n._isRestartable&&(e=\"Restartable\"),n._isKeepingLatest&&(e=\"KeepLatest\");var r=e+\" Task\";\"General\"!==e&&(r=r+\" with maxConcurrency \"+n._maxConcurrency);var t=n._instances.map(function(n){var e;return n.isSuccessful?e=\"🍏\":n.isRunning||n.isEnqueued?e=\"🍊\":(n.isError||n.isCanceled||n.isDropped)&&(e=\"🔴\"),{status:e+\" \"+n.status,value:n.value,error:n.error}});console.log(\"🚦 \"+r),console.table(t)}function y(n){return\"test\"===process.env.NODE_ENV?Promise.resolve():new Promise(function(e){return setTimeout(e,n)})}function b(n,e){return new n.CancelToken(function(n){e.pr.catch(function(e){\"cancel\"===e&&n()})})}function w(n){return R(regeneratorRuntime.mark(function e(r){var t=arguments;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt(\"return\",n.apply(void 0,[r].concat([].slice.call(t,1))));case 1:case\"end\":return e.stop()}},e)}))}function E(e,r,t){var i,c,o=m({id:t.id,isDropped:!1,isEnqueued:!1,hasStarted:!1,isRunning:!1,isFinished:!1,isCanceling:!1,isCanceled:n(function(){return o.isCanceling&&o.isFinished}),isActive:n(function(){return o.isRunning&&!o.isCanceling}),isSuccessful:!1,isNotDropped:n(function(){return!o.isDropped}),isError:n(function(){return!!o.error}),status:n(function(){var n=[[o.isRunning,\"running\"],[o.isEnqueued,\"enqueued\"],[o.isCanceled,\"canceled\"],[o.isCanceling,\"canceling\"],[o.isDropped,\"dropped\"],[o.isError,\"error\"],[o.isSuccessful,\"success\"]].find(function(n){return n[0]});return n&&n[1]}),error:null,value:null,cancel:function(n){(void 0===n?{force:!1}:n).force||(o.isCanceling=!0,o.isEnqueued&&(o.isFinished=!0),o.isEnqueued=!1),o.token&&o.token.abort(\"cancel\")},canceledOn:function(n){return n.pr.catch(function(n){o.cancel()}),o},_run:function(){!function(n,e,r,t){var i=new u.cancelToken,c=u(e,i);function o(){n.isRunning=!1,n.isFinished=!0}n.token=i,n.hasStarted=!0,n.isRunning=!0,n.isEnqueued=!1,c.call.apply(c,[n,i].concat(r)).then(function(e){n.value=e,n.isSuccessful=!0,o(),n._deferredObject.resolve(e),t.onFinish(n)}).catch(function(e){\"cancel\"!==e&&(n.error=e),o(),n._shouldThrow&&n._deferredObject.reject(e),t.onFinish(n)})}(o,e,r,t)},_handled:!0,_deferredObject:(i={},c=new Promise(function(n,e){i.resolve=n,i.reject=e}),i.promise=c,i),_shouldThrow:!1,then:function(n,e){return o._shouldThrow=!0,o._deferredObject.promise.then(n,e)},catch:function(n){return o._shouldThrow=!0,o._deferredObject.promise.catch(n)},finally:function(n){return o._shouldThrow=!0,o._deferredObject.promise.finally(n)}}),s=t.modifiers;return s.drop?o.isDropped=!0:s.enqueue?o.isEnqueued=!0:o._run(),o}function R(e,r){void 0===r&&(r={cancelOnUnmount:!0});var u=t(),c=m({_isRestartable:!1,_isDropping:!1,_isEnqueuing:!1,_isKeepingLatest:!1,_maxConcurrency:1,_hasConcurrency:n(function(){return c._isRestartable||c._isDropping||c._isEnqueuing||c._isKeepingLatest}),isIdle:n(function(){return!c.isRunning}),isRunning:n(function(){return!!c._instances.find(function(n){return n.isRunning})}),isError:n(function(){return!(!c.last||!c.last.isError)}),_instances:[],_successfulInstances:d(function(){return c},\"isSuccessful\"),_runningInstances:d(function(){return c},\"isRunning\"),_enqueuedInstances:d(function(){return c},\"isEnqueued\"),_notDroppedInstances:d(function(){return c},\"isNotDropped\"),_activeInstances:d(function(){return c},\"isActive\"),performCount:_(function(){return c._instances}),last:v(function(){return c._notDroppedInstances}),lastSuccessful:v(function(){return c._successfulInstances}),firstEnqueued:g(function(){return c._enqueuedInstances}),cancelAll:function(n){var e=(void 0===n?{force:!1}:n).force;c._instances.forEach(function(n){try{(e||!n.isDropped&&!n.isFinished)&&n.cancel({force:e})}catch(n){if(\"cancel\"!==n)throw n}})},perform:function(){var n={enqueue:!1,drop:!1};c._hasConcurrency&&f(c)&&(c._isDropping&&(n.drop=!0),c._isRestartable&&l(c),c._isKeepingLatest&&p(c),(c._isEnqueuing||c._isKeepingLatest)&&(n.enqueue=!0));var r=function(){return q(c)},t=E(e,[].slice.call(arguments),{modifiers:n,onFinish:r,id:c._instances.length+1});return c._instances=[].concat(c._instances,[t]),t},clear:function(){this.cancelAll({force:!0}),this._instances=[]},restartable:function(){return c._resetModifierFlags(),c._isRestartable=!0,c},drop:function(){return c._resetModifierFlags(),c._isDropping=!0,c},enqueue:function(){return c._resetModifierFlags(),c._isEnqueuing=!0,c},keepLatest:function(){return c._resetModifierFlags(),c._isKeepingLatest=!0,c},_resetModifierFlags:function(){c._isKeepingLatest=!1,c._isRestartable=!1,c._isEnqueuing=!1,c._isDropping=!1},maxConcurrency:function(n){return c._maxConcurrency=n,c}});return u&&r.cancelOnUnmount&&i(function(){c._instances&&c.cancelAll({force:!0})}),c}function q(n){if(n._isEnqueuing||n._isKeepingLatest){var e=n.firstEnqueued;e&&e._run()}}function C(n){return R(regeneratorRuntime.mark(function e(r){var t,i,u,c,o=arguments;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,n.perform.apply(n,[].slice.call(o,1)).canceledOn(r);case 2:t=e.sent,i=s([].slice.call(o,1));case 4:if((u=i()).done){e.next=11;break}return c=u.value,e.next=8,c.perform(t).canceledOn(r);case 8:t=e.sent;case 9:e.next=4;break;case 11:return e.abrupt(\"return\",t);case 12:case\"end\":return e.stop()}},e)}))}function x(){return R(regeneratorRuntime.mark(function n(e){var r,t=arguments,i=arguments;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return r=[].slice.call(i).map(function(n){return n.perform.apply(n,[].slice.call(t,1)).canceledOn(e)}),n.next=3,Promise.all(r);case 3:return n.abrupt(\"return\",n.sent);case 5:case\"end\":return n.stop()}},n)}))}function O(){return R(regeneratorRuntime.mark(function n(e){var r,t,i,u,c=arguments;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:r=[],t=s([].slice.call(c));case 2:if((i=t()).done){n.next=11;break}return u=i.value,n.t0=r,n.next=7,u.perform.apply(u,[].slice.call(c,1)).canceledOn(e);case 7:n.t1=n.sent,n.t0.push.call(n.t0,n.t1);case 9:n.next=2;break;case 11:return n.abrupt(\"return\",r);case 12:case\"end\":return n.stop()}},n)}))}var j=function(){return\"undefined\"==typeof window};function D(n){n._deferredObject.promise=n.isError?Promise.reject(n.error):Promise.resolve(n.value),n.cancel=function(){},n.canceledOn=function(){return n},n._run=function(){},n.then=function(){var e;return(e=n._deferredObject.promise).then.apply(e,[].slice.call(arguments))},n.catch=function(){var e;return(e=n._deferredObject.promise).catch.apply(e,[].slice.call(arguments))},n.finally=function(){var e;return(e=n._deferredObject.promise).finally.apply(e,[].slice.call(arguments))}}function S(n,e){if(j()){var r=e.perform();return function(n){throw new Error(\"vue-concurrency SSR features are not supported in Vue 3 so far\")}(),r}return I(n,e).reverse()[0]||e.perform()}function I(n,e){var r=function(n){if(!k())throw Error(\"Could not access window.__NUXT__\");return k().vueConcurrency[n].value}(n);return r&&(e._instances=r.instances||[],e._instances.forEach(D),function(n){delete k().vueConcurrency[n]}(n)),e._instances}function k(){return window.__NUXT__}function F(e,r){j()?function(e,r){var i=t().$root,u=i&&i.context&&i.context.nuxtState;if(!u)throw new Error(\"Could not access $root.context.nuxtState\");u.vueConcurrency||(u.vueConcurrency={}),u.vueConcurrency[e]=n(function(){return{instances:r._instances}})}(e,r):I(e,r)}function T(r){var t=Object.values(r),i=e(c({isRunning:n(function(){return!!t.find(function(n){return n.isRunning})}),isIdle:n(function(){return!i.isRunning})},r));return i}export{b as getCancelToken,h as printTask,y as timeout,w as useAsyncTask,x as useParallelTask,C as usePipeTask,F as useSSRPersistance,O as useSequentialTask,R as useTask,T as useTaskGroup,S as useTaskPrefetch,a as waitForValue};\n//# sourceMappingURL=vue-concurrency.module.js.map\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';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var fails = require('./fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","export const version = \"random/5.4.0\";\n//# sourceMappingURL=_version.js.map","export const version = \"logger/5.4.1\";\n//# sourceMappingURL=_version.js.map","\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\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 ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\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 ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\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 ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\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 ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficien funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\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 ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\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]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\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 const reason = message;\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\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 checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n 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 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 checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\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 checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { 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 static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\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 static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}