@thenamespace/ens-components 0.0.5-alpha → 0.0.7-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +218 -208
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +37 -26
- package/dist/index.js +1374 -960
- package/dist/index.js.map +1 -1
- package/dist/types/components/atoms/chain-icon/icons/ArbSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/BaseSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/BitcoinSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/CeloSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/EthSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/MaticSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/OpSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/SolSvg.d.ts +6 -0
- package/dist/types/components/atoms/chain-icon/icons/ZoraSvg.d.ts +6 -0
- package/dist/types/components/index.d.ts +3 -2
- package/dist/types/constants/records/textConstants.d.ts +1 -1
- package/dist/types/hooks/useWeb3Clients.d.ts +14 -14
- package/dist/types/types/chain.d.ts +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/atoms/button/Button.tsx","../src/components/atoms/input/Input.tsx","../src/components/atoms/text/Text.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/book.js","../node_modules/lucide-react/dist/esm/icons/box.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/circle-fading-plus.js","../node_modules/lucide-react/dist/esm/icons/circle-user.js","../node_modules/lucide-react/dist/esm/icons/circle-x.js","../node_modules/lucide-react/dist/esm/icons/globe.js","../node_modules/lucide-react/dist/esm/icons/image.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/mail.js","../node_modules/lucide-react/dist/esm/icons/map-pin.js","../node_modules/lucide-react/dist/esm/icons/pin.js","../node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/lucide-react/dist/esm/icons/square-user.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/atoms/icon/custom/DiscordIcon.tsx","../src/components/atoms/icon/custom/GithubIcon.tsx","../src/components/atoms/icon/custom/TelegramIcon.tsx","../src/components/atoms/icon/custom/YoutubeIcon.tsx","../src/components/atoms/icon/custom/XIcon.tsx","../src/components/atoms/icon/Icon.tsx","../src/components/atoms/chain-icon/ChainIcon.tsx","../src/components/atoms/tooltip/Tooltip.tsx","../src/utils/strings.ts","../src/utils/coins.ts","../src/utils/records.ts","../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha2.js","../node_modules/@noble/hashes/esm/hmac.js","../node_modules/@noble/curves/esm/utils.js","../node_modules/@noble/curves/esm/abstract/modular.js","../node_modules/@noble/curves/esm/abstract/curve.js","../node_modules/@noble/curves/esm/abstract/weierstrass.js","../node_modules/@noble/curves/esm/_shortw_utils.js","../node_modules/@noble/curves/esm/abstract/hash-to-curve.js","../node_modules/@noble/curves/esm/secp256k1.js","../node_modules/@noble/hashes/esm/legacy.js","../node_modules/@noble/hashes/esm/ripemd160.js","../node_modules/@scure/base/lib/esm/index.js","../node_modules/@noble/hashes/esm/sha256.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/base58.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/eosio.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/abbc.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bech32.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/cbor.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/crc32.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/byron.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ada.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ae.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/aib.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bytes.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/aion.js","../node_modules/@noble/hashes/esm/sha512.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/base32.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/algo.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ar.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ardr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ark.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/atom.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/avax.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bitcoin.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bcd.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bch.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bch.js","../node_modules/@noble/hashes/esm/sha3.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xmr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bcn.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bdx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bnb.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bps.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bsv.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/btc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/btg.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/btm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bts.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/cca.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ccxx.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/hex.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/celoLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ckb.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/cloLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dash.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dcr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dgb.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/divi.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/doge.js","../node_modules/@noble/hashes/esm/_blake.js","../node_modules/@noble/hashes/esm/blake2.js","../node_modules/@noble/hashes/esm/blake2b.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/dot.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dot.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/egld.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ela.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/eos.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/etcLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/eth.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/etn.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ewtLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/leb128.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/fil.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/fio.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/firo.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/flow.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/flow.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/zcash.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/flux.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ftmLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/gnoLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/goLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/grin.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/gxc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hbar.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hive.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hns.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hnt.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/icx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iost.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iota.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iotx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iris.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/kava.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/kmd.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ksm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/lcc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/lrg.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/lsk.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ltc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/luna.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/mona.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/mrx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nano.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nas.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/near.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/near.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/neo.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nim.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nmc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nostr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nrgLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nuls.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/one.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ont.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/poaLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ppc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/qtum.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rbtc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rdd.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rune.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rvn.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sero.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sol.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/srm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/steem.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/strat.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/strk.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/stx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sui.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sys.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/tfuel.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/thetaLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/tomoLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/trx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ttLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vet.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/via.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vlx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vlxLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vsys.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/wan.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/waves.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/wicc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xch.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xem.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xhv.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xlm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xrp.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xtz.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xvg.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/zec.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/zen.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/zil.js","../node_modules/@ensdomains/address-encoder/dist/esm/consts/coinTypeToNameMap.js","../node_modules/@ensdomains/address-encoder/dist/esm/consts/coinNameToTypeMap.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/evm.js","../node_modules/@ensdomains/address-encoder/dist/esm/index.js","../src/constants/records/addressConstants.ts","../src/types/records.ts","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bytes.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/vendor/base-x.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base32.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base58.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/vendor/varint.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/varint.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/hashes/digest.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/cid.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base36.js","../node_modules/@ensdomains/content-hash/dist/esm/helpers.js","../node_modules/@ensdomains/content-hash/dist/esm/map.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base64.js","../node_modules/@ensdomains/content-hash/dist/esm/profiles.js","../node_modules/@ensdomains/content-hash/dist/esm/index.js","../src/constants/records/contenthashConstants.ts","../src/constants/records/textConstants.ts","../src/components/select-records-form/text-records/TextRecords.tsx","../src/components/select-records-form/address-record/AddressRecords.tsx","../src/components/molecules/dropdown/Dropdown.tsx","../src/components/molecules/contenthash/icons/IpfsIcon.tsx","../src/components/molecules/contenthash/icons/OnionIcon.tsx","../src/components/molecules/contenthash/icons/ArweaveIcon.tsx","../src/components/molecules/contenthash/icons/SkynetIcon.tsx","../src/components/molecules/contenthash/icons/SwarmIcon.tsx","../src/components/molecules/contenthash/ContenthashIcon.tsx","../src/components/molecules/alert/Alert.tsx","../src/components/molecules/modal/Modal.tsx","../src/components/select-records-form/contenthash-records/ContenthashRecord.tsx","../src/components/select-records-form/image-records/ImageRecords.tsx","../src/components/select-records-form/SelectRecordsForm.tsx","../src/components/pending-transaction/PendingTransaction.tsx","../src/hooks/useWaitForTransaction.tsx","../src/hooks/useWeb3Clients.tsx","../src/web3/resolver-abi.ts","../src/theme/ThemeProvider.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport \"./Button.css\";\n\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'prefix'> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n prefix?: ReactNode;\n dataTestId?: string;\n}\n\nconst sizeToClass: Record<ButtonSize, string> = {\n sm: \"ns-btn--sm\",\n md: \"ns-btn--md\",\n lg: \"ns-btn--lg\",\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = \"solid\",\n size = \"md\",\n className = \"\",\n children,\n loading = false,\n disabled,\n prefix,\n dataTestId,\n ...rest\n}) => {\n const isDisabled = disabled || loading;\n\n const classes = [\n \"ns-btn\",\n `ns-btn--${variant}`,\n sizeToClass[size],\n loading ? \"ns-btn--loading\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n className={classes}\n disabled={isDisabled}\n aria-disabled={isDisabled || undefined}\n aria-busy={loading || undefined}\n data-test-id={dataTestId}\n {...rest}\n >\n {loading && <span className=\"ns-btn__spinner\" aria-hidden=\"true\" />}\n {prefix && !loading && <span className=\"ns-btn__prefix\">{prefix}</span>}\n <span className=\"ns-btn__label\">{children}</span>\n </button>\n );\n};\n\nexport default Button;\n","import React, { forwardRef } from \"react\";\nimport \"./Input.css\";\n\nexport type InputType = \"text\" | \"number\";\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n type?: InputType;\n size?: InputSize;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n disabled?: boolean;\n error?: boolean;\n dataTestId?: string;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = \"text\",\n size = \"md\",\n prefix,\n suffix,\n disabled = false,\n error = false,\n className = \"\",\n dataTestId,\n ...rest\n },\n ref\n ) => {\n const sizeClass = `ns-input--${size}`;\n const errorClass = error ? \"ns-input--error\" : \"\";\n const disabledClass = disabled ? \"ns-input--disabled\" : \"\";\n\n const classes = [\n \"ns-input\",\n sizeClass,\n errorClass,\n disabledClass,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={`ns-input__wrapper ${sizeClass}`}>\n {prefix && <div className=\"ns-input__prefix\">{prefix}</div>}\n <input\n ref={ref}\n type={type}\n className={classes}\n disabled={disabled}\n aria-invalid={error || undefined}\n data-test-id={dataTestId}\n {...rest}\n />\n {suffix && <div className=\"ns-input__suffix\">{suffix}</div>}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import React from \"react\";\nimport \"./Text.css\";\n\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type TextWeight = \"light\" | \"regular\" | \"medium\" | \"bold\";\nexport type TextColor = \"primary\" | \"white\" | \"grey\" | \"danger\";\n\nexport interface TextProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n size?: TextSize;\n weight?: TextWeight;\n color?: TextColor;\n dataTestId?: string;\n}\n\nexport const Text: React.FC<TextProps> = ({\n children,\n size = \"md\",\n weight = \"regular\",\n color = \"primary\",\n className = \"\",\n style,\n dataTestId,\n ...rest\n}) => {\n const sizeClass = `ns-text--${size}`;\n const weightClass = `ns-text--${weight}`;\n const colorClass = `ns-text--${color}`;\n\n const classes = [\"ns-text\", sizeClass, weightClass, colorClass, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={classes} style={style} data-test-id={dataTestId} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Text;\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\",\n key: \"k3hazp\"\n }\n ]\n];\nconst Book = createLucideIcon(\"book\", __iconNode);\n\nexport { __iconNode, Book as default };\n//# sourceMappingURL=book.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\",\n key: \"hh9hay\"\n }\n ],\n [\"path\", { d: \"m3.3 7 8.7 5 8.7-5\", key: \"g66t2b\" }],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }]\n];\nconst Box = createLucideIcon(\"box\", __iconNode);\n\nexport { __iconNode, Box as default };\n//# sourceMappingURL=box.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 2a10 10 0 0 1 7.38 16.75\", key: \"175t95\" }],\n [\"path\", { d: \"M12 8v8\", key: \"napkw2\" }],\n [\"path\", { d: \"M16 12H8\", key: \"1fr5h0\" }],\n [\"path\", { d: \"M2.5 8.875a10 10 0 0 0-.5 3\", key: \"1vce0s\" }],\n [\"path\", { d: \"M2.83 16a10 10 0 0 0 2.43 3.4\", key: \"o3fkw4\" }],\n [\"path\", { d: \"M4.636 5.235a10 10 0 0 1 .891-.857\", key: \"1szpfk\" }],\n [\"path\", { d: \"M8.644 21.42a10 10 0 0 0 7.631-.38\", key: \"9yhvd4\" }]\n];\nconst CircleFadingPlus = createLucideIcon(\"circle-fading-plus\", __iconNode);\n\nexport { __iconNode, CircleFadingPlus as default };\n//# sourceMappingURL=circle-fading-plus.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"3\", key: \"ilqhr7\" }],\n [\"path\", { d: \"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662\", key: \"154egf\" }]\n];\nconst CircleUser = createLucideIcon(\"circle-user\", __iconNode);\n\nexport { __iconNode, CircleUser as default };\n//# sourceMappingURL=circle-user.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n];\nconst CircleX = createLucideIcon(\"circle-x\", __iconNode);\n\nexport { __iconNode, CircleX as default };\n//# sourceMappingURL=circle-x.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\", key: \"13o1zl\" }],\n [\"path\", { d: \"M2 12h20\", key: \"9i4pu4\" }]\n];\nconst Globe = createLucideIcon(\"globe\", __iconNode);\n\nexport { __iconNode, Globe as default };\n//# sourceMappingURL=globe.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n];\nconst Image = createLucideIcon(\"image\", __iconNode);\n\nexport { __iconNode, Image as default };\n//# sourceMappingURL=image.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\", key: \"132q7q\" }],\n [\"rect\", { x: \"2\", y: \"4\", width: \"20\", height: \"16\", rx: \"2\", key: \"izxlao\" }]\n];\nconst Mail = createLucideIcon(\"mail\", __iconNode);\n\nexport { __iconNode, Mail as default };\n//# sourceMappingURL=mail.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\",\n key: \"1r0f0z\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"3\", key: \"ilqhr7\" }]\n];\nconst MapPin = createLucideIcon(\"map-pin\", __iconNode);\n\nexport { __iconNode, MapPin as default };\n//# sourceMappingURL=map-pin.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 17v5\", key: \"bb1du9\" }],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n key: \"1nkz8b\"\n }\n ]\n];\nconst Pin = createLucideIcon(\"pin\", __iconNode);\n\nexport { __iconNode, Pin as default };\n//# sourceMappingURL=pin.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"3\", key: \"ilqhr7\" }],\n [\"path\", { d: \"M7 21v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2\", key: \"1m6ac2\" }]\n];\nconst SquareUser = createLucideIcon(\"square-user\", __iconNode);\n\nexport { __iconNode, SquareUser as default };\n//# sourceMappingURL=square-user.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import React from \"react\";\n\ninterface DiscordIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const DiscordIcon: React.FC<DiscordIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={props.color}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M20.727 5.455s-2.5-1.958-5.454-2.182l-.266.532c2.67.654 3.895 1.59 5.175 2.74C17.976 5.42 15.797 4.364 12 4.364S6.025 5.419 3.818 6.545c1.28-1.15 2.737-2.19 5.175-2.74l-.266-.532c-3.098.293-5.454 2.182-5.454 2.182S.479 9.505 0 17.455c2.816 3.247 7.09 3.272 7.09 3.272l.895-1.192a10.9 10.9 0 0 1-4.712-3.171C5.039 17.7 7.705 19.09 12 19.09c4.296 0 6.961-1.391 8.727-2.727a10.9 10.9 0 0 1-4.712 3.171l.894 1.192s4.275-.025 7.091-3.273c-.48-7.95-3.273-12-3.273-12M8.455 15.273c-1.055 0-1.91-.977-1.91-2.182s.855-2.182 1.91-2.182 1.909.977 1.909 2.182-.855 2.182-1.91 2.182m7.09 0c-1.054 0-1.909-.977-1.909-2.182s.855-2.182 1.91-2.182 1.909.977 1.909 2.182-.855 2.182-1.91 2.182\"></path>\n </svg>\n);\n","import React from \"react\";\n\ninterface GithubIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const GithubIcon: React.FC<GithubIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill={props.color}\n >\n <path d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"></path>\n </svg>\n);\n","import React from \"react\";\n\ninterface TelegramIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const TelegramIcon: React.FC<TelegramIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill={props.color}\n width={size}\n height={size}\n {...props}\n viewBox=\"0 0 24 24\"\n >\n <g clipPath=\"url(#SocialTelegram_svg__a)\">\n <path\n fill-rule=\"evenodd\"\n d=\"M24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12M12.43 8.859q-1.75.728-6.998 3.014-.852.339-.893.663c-.046.366.412.51 1.034.705q.128.04.263.084c.613.199 1.437.432 1.865.441q.584.012 1.302-.48 4.902-3.31 5.061-3.346c.075-.017.179-.039.249.024.07.062.063.18.056.212-.046.193-1.84 1.862-2.77 2.726-.29.269-.495.46-.537.504q-.143.145-.282.279c-.57.548-.996.96.024 1.632.49.323.882.59 1.273.856.427.291.853.581 1.405.943q.21.14.405.28c.497.355.944.673 1.496.623.32-.03.652-.331.82-1.23.397-2.126 1.179-6.73 1.36-8.628a2 2 0 0 0-.02-.472.5.5 0 0 0-.172-.325c-.143-.117-.365-.142-.465-.14-.451.008-1.143.249-4.476 1.635\"\n clip-rule=\"evenodd\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"SocialTelegram_svg__a\">\n <path fill={props.color} d=\"M0 0h24v24H0z\"></path>\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\n\ninterface YoutubeIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const YoutubeIcon: React.FC<YoutubeIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.54 6.42C22.42 5.945 22.183 5.51 21.828 5.156C21.474 4.802 21.038 4.565 20.56 4.44C18.88 4 12 4 12 4S5.12 4 3.46 4.46C2.982 4.585 2.546 4.822 2.192 5.176C1.838 5.53 1.6 5.965 1.48 6.44C1 8.12 1 12 1 12S1 15.88 1.46 17.54C1.6 18.015 1.838 18.45 2.192 18.804C2.546 19.158 2.982 19.395 3.46 19.52C5.12 20 12 20 12 20S18.88 20 20.54 19.54C21.018 19.415 21.454 19.178 21.808 18.824C22.162 18.47 22.4 18.035 22.52 17.56C23 15.88 23 12 23 12S23 8.12 22.54 6.42Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.75 15.02L15.5 12L9.75 8.98V15.02Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\n\ninterface XIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const XIcon: React.FC<XIconProps> = ({ size = 24, ...props }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={props.color}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fill=\"inherit\"\n d=\"m.058 1 9.267 12.39L0 23.463h2.099l8.163-8.82 6.596 8.82H24l-9.788-13.086L22.892 1h-2.1l-7.517 8.122L7.2 1zm3.087 1.546h3.28l14.488 19.37h-3.28z\"\n ></path>\n </svg>\n);\n","import React, { ReactElement } from \"react\";\nimport * as LucideIcons from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport \"./Icon.css\";\nimport {\n User,\n Search,\n SquareUser,\n Globe,\n Pin,\n Box,\n Book,\n X,\n CheckCircle,\n AlertTriangle,\n Info,\n XCircle,\n} from \"lucide-react\";\nimport {\n DiscordIcon,\n GithubIcon,\n TelegramIcon,\n YoutubeIcon,\n XIcon,\n} from \"./custom\";\n\ntype CustomIcon = React.ComponentType<{\n size?: number;\n color?: string;\n className?: string;\n \"data-test-id\"?: string;\n}>;\ntype IconComponent = LucideIcon | CustomIcon;\n\nexport type IconName =\n | \"person\"\n | \"x\"\n | \"search\"\n | \"square-user\"\n | \"globe\"\n | \"pin\"\n | \"box\"\n | \"book\"\n | \"map-pin\"\n | \"mail\"\n | \"discord\"\n | \"github\"\n | \"telegram\"\n | \"youtube\"\n | \"image\"\n | \"circle-person\"\n | \"twitter\"\n | \"circle-alert\"\n | \"check-circle\"\n | \"alert-triangle\"\n | \"info\"\n | \"x-circle\"\n | \"rotate-circle\"\n\nconst icons: Record<IconName, IconComponent> = {\n person: User,\n x: X,\n search: Search,\n \"square-user\": SquareUser,\n globe: Globe,\n pin: Pin,\n box: Box,\n book: Book,\n \"map-pin\": LucideIcons.MapPin,\n mail: LucideIcons.Mail,\n discord: DiscordIcon,\n github: GithubIcon,\n telegram: TelegramIcon,\n youtube: YoutubeIcon,\n image: LucideIcons.Image,\n \"circle-person\": LucideIcons.CircleUser,\n twitter: XIcon,\n \"circle-alert\": LucideIcons.CircleAlert,\n \"check-circle\": CheckCircle,\n \"alert-triangle\": AlertTriangle,\n info: Info,\n \"x-circle\": XCircle,\n \"rotate-circle\": LucideIcons.CircleFadingPlus\n};\n\nexport interface IconProps {\n name: IconName;\n color?: string;\n size?: number;\n className?: string;\n dataTestId?: string;\n}\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n color = \"currentColor\",\n size = 24,\n className = \"\",\n dataTestId,\n}) => {\n const IconComponent = icons[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found in Icons`);\n return null;\n }\n\n return (\n <IconComponent\n size={size}\n color={color}\n className={`ns-icon ${className}`}\n data-test-id={dataTestId}\n />\n );\n};\n\nexport default Icon;\n","import React from \"react\";\nimport \"./ChainIcon.css\";\nimport type { ChainName } from \"@/types\";\n\ninterface ChainIconProps extends React.SVGProps<SVGSVGElement> {\n chain: ChainName;\n size?: number;\n}\n\nexport const ChainIcon: React.FC<ChainIconProps> = ({\n chain,\n size = 20,\n className,\n ...props\n}) => {\n const renderIcon = () => {\n switch (chain) {\n case \"eth\":\n return (\n <g clipPath=\"url(#clip0_597_2890)\">\n <path\n d=\"M9.75586 19.5C15.0026 19.5 19.2559 15.2467 19.2559 10C19.2559 4.75329 15.0026 0.5 9.75586 0.5C4.50915 0.5 0.255859 4.75329 0.255859 10C0.255859 15.2467 4.50915 19.5 9.75586 19.5Z\"\n fill=\"#7A57DD\"\n />\n <path\n d=\"M9.75488 3.66663V8.34801L13.7116 10.1161L9.75488 3.66663Z\"\n fill=\"white\"\n fillOpacity=\"0.602\"\n />\n <path\n d=\"M9.75464 3.66663L5.79736 10.1161L9.75464 8.34801V3.66663Z\"\n fill=\"white\"\n />\n <path\n d=\"M9.75488 13.1498V16.3307L13.7143 10.8529L9.75488 13.1498Z\"\n fill=\"white\"\n fillOpacity=\"0.602\"\n />\n <path\n d=\"M9.75464 16.3307V13.1493L5.79736 10.8529L9.75464 16.3307Z\"\n fill=\"white\"\n />\n <path\n d=\"M9.75488 12.4135L13.7116 10.1161L9.75488 8.34912V12.4135Z\"\n fill=\"white\"\n fillOpacity=\"0.2\"\n />\n <path\n d=\"M5.79736 10.1161L9.75464 12.4135V8.34912L5.79736 10.1161Z\"\n fill=\"white\"\n fillOpacity=\"0.602\"\n />\n </g>\n );\n case \"arb\":\n return (\n <>\n <path\n fill=\"#2d374b\"\n d=\"m24.554 20.16 3.23-5.482 8.71 13.565.005 2.604-.029-17.915a1.35 1.35 0 0 0-.624-1.075l-15.68-9.02a1.38 1.38 0 0 0-1.339.087l-.055.034-15.22 8.82-.06.028a1.34 1.34 0 0 0-.787 1.146L2.73 27.55l8.113-12.574c1.02-1.667 3.246-2.205 5.313-2.175l2.424.064-14.286 22.91 1.684.97 14.457-23.857 6.39-.023-14.42 24.459 6.01 3.457.718.412c.303.124.661.13.968.02L36 31.996l-3.04 1.762zm1.232 17.757-6.069-9.526 3.705-6.287 7.971 12.564-5.607 3.25Z\"\n />\n <path\n fill=\"#28a0f0\"\n d=\"m19.715 28.392 6.07 9.525 5.606-3.249-7.97-12.564zm16.783 2.455-.004-2.604-8.71-13.565-3.231 5.483 8.408 13.598L36 31.997c.298-.242.479-.597.498-.98z\"\n />\n <path\n fill=\"#fff\"\n d=\"m0 33.302 4.293 2.474L18.58 12.865l-2.424-.064c-2.066-.03-4.291.508-5.313 2.175L2.73 27.55 0 31.743zm26.825-20.437-6.39.023L5.976 36.745l5.053 2.91 1.375-2.331 14.42-24.46Z\"\n />\n <path\n fill=\"#96bedc\"\n d=\"M39.191 12.832a4.07 4.07 0 0 0-1.91-3.272L21.394.424a4.13 4.13 0 0 0-3.645 0C17.617.49 2.3 9.373 2.3 9.373a4.04 4.04 0 0 0-2.3 3.45v18.92l2.73-4.194-.024-14.599a1.35 1.35 0 0 1 .562-1.015c.071-.05 15.649-9.068 15.699-9.093a1.38 1.38 0 0 1 1.198-.006l15.68 9.02c.371.236.604.637.624 1.075v18.084c-.018.383-.17.739-.468.98l-3.04 1.763-1.569.909-5.607 3.249-5.685 3.295a1.38 1.38 0 0 1-.968-.02l-6.727-3.868-1.375 2.33 6.046 3.481.524.297c.226.127.38.211.435.238.43.209 1.048.33 1.605.33.51 0 1.009-.094 1.48-.278l16.515-9.564a4.04 4.04 0 0 0 1.556-3.042z\"\n />\n </>\n );\n case \"base\":\n return (\n <path\n fill=\"#0052ff\"\n d=\"M54.921 110.034c30.438 0 55.113-24.632 55.113-55.017S85.359 0 54.921 0C26.043 0 2.353 22.171 0 50.392h72.847v9.25H0c2.353 28.22 26.043 50.392 54.921 50.392\"\n />\n );\n case \"bitcoin\":\n return (\n <path\n fill=\"#f39321\"\n d=\"M43.43 125.143c7.71-10.766 14.875-21.901 23.562-31.986 15.8-18.343 33.692-34.063 54.18-47.075 18.379-11.672 37.761-20.872 58.501-27.305 32.294-10.018 65.26-12.997 98.838-9.165 24.544 2.801 48.191 9.067 70.713 19.215 13.633 6.142 26.456 13.731 39.025 21.927 25.328 16.515 45.618 38.014 62.58 62.577 18.116 26.236 29.889 55.421 36.346 86.725 4.535 21.983 6.449 44.171 4.503 66.504-2.399 27.536-8.514 54.086-19.938 79.604-9.662 21.583-21.589 41.401-36.861 59.301-14.94 17.511-31.788 32.831-51.149 45.461-13.184 8.6-26.926 16.276-41.434 21.975-24.274 9.537-49.447 15.986-75.787 17.115-18.545.795-36.985.483-55.279-2.763-15.713-2.788-31.049-6.858-46.063-12.496-14.566-5.47-28.693-11.95-41.709-20.143-18.766-11.812-35.683-26.147-50.737-42.663-16.773-18.403-30.373-38.808-40.779-61.344-14.7-31.835-21.929-65.401-22.359-100.425-.162-13.173 1.349-26.244 3.105-39.283.126-.933-.002-1.899-.012-2.851 1.536-.952 1.4-2.618 1.677-4.071 3.906-20.483 10.494-40.059 19.418-58.906 3.162-6.674 7.525-12.764 9.659-19.928m281.727 129.37c6.537-3.474 12.749-5.465 17.658-9.85 18.918-16.899 23.96-56.673-6.747-75.833-9.566-5.969-19.77-10.393-30.77-14.907 1.819-14.731 7.709-28.516 9.622-43.603-9.076-2.249-17.578-5.234-26.425-6.193l-10.674 41.837c-6.78-2.076-13.761-1.879-20.142-5.473 2.302-14.39 7.773-27.872 9.268-42.314-9.322-1.464-17.216-5.094-26.265-5.485l-10.586 42.215c-17.944-2.75-34.419-8.921-52.52-12.239-3.977 8.91-5.738 18.311-7.334 28.313 5.896 1.392 11.022 2.623 16.158 3.811 12.965 2.998 16.517 10.086 13.439 21.424-2.19 8.065-4.166 16.189-6.182 24.301-7.245 29.16-14.432 58.333-21.72 87.482-1.642 6.567-5.734 8.706-12.398 7.731-6.563-.96-12.757-3.907-19.99-3.693-3.136 10.032-9.378 18.871-11.588 29.946l51.344 13.08c-1.312 15.208-7.614 29.125-9.476 44.441l25.544 6.123c5.653-14.044 6.957-28.803 12.226-43.33 6.351 3.265 13.397 2.317 19.612 6.427l-10.178 42.077c8.986 3.216 17.753 4.528 26.758 6.77l10.578-42.386c2.123-1.091 3.676-.888 5.143-.574a132.9 132.9 0 0 0 42.676 2.14c12.368-1.373 23.343-6.088 32.148-15.372 9.791-10.323 14.71-22.952 17.078-36.535 1.93-11.065 1.436-22.277-5.06-32.071-5.091-7.674-12.084-13.53-21.197-18.26M223.128 312.17c17.411 4.325 34.803 8.95 53.02 5.624 9.715-1.774 17.037-6.73 19.985-16.503 2.78-9.218 1.164-17.593-5.673-24.879-7.11-7.576-16.254-11.514-25.682-14.807-11.264-3.934-22.683-7.508-34.99-8.48l-13.972 56.788c2.981.929 5.117 1.712 7.312 2.257m61.5-80.324c9.628-1.368 17.612-7.738 19.958-16.393 2.869-10.583-.337-19.865-8.902-26.178-9.718-7.163-20.908-10.807-32.47-13.337-4.307-.943-8.544-3.454-13.756-1.759l-12.599 51.209c16.457 4.155 31.611 8.753 47.769 6.458\"\n />\n );\n case \"matic\":\n return (\n <path d=\"M377.3 163.9c-9.2-5.4-21.2-5.4-31.4 0l-72 41.7-48.9 27.2-72 41.7c-9.2 5.4-21.2 5.4-31.4 0l-57.2-32.6c-9.2-5.4-15.7-15.4-15.7-26.3v-64.3c0-10.9 5.5-20.8 15.7-26.3l56.3-31.7c9.2-5.4 21.2-5.4 31.4 0l56.3 31.7c9.2 5.4 15.7 15.4 15.7 26.3V193l48.9-28.1v-41.7c0-10.9-5.5-20.8-15.7-26.3L153.1 37.1c-9.2-5.4-21.2-5.4-31.4 0l-106 59.8C5.5 102.3 0 112.3 0 123.2v120.5c0 10.9 5.5 20.8 15.7 26.3l106.1 59.8c9.2 5.4 21.2 5.4 31.4 0l72-40.8 48.9-28.1 72-40.8c9.2-5.4 21.2-5.4 31.4 0l56.3 31.7c9.2 5.4 15.7 15.4 15.7 26.3v64.3c0 10.9-5.5 20.8-15.7 26.3l-56.3 32.6c-9.2 5.4-21.2 5.4-31.4 0l-56.3-31.7c-9.2-5.4-15.7-15.4-15.7-26.3v-41.7l-48.9 28.1v41.7c0 10.9 5.5 20.8 15.7 26.3L347 457.5c9.2 5.4 21.2 5.4 31.4 0l106.1-59.8c9.2-5.4 15.7-15.4 15.7-26.3V250.9c0-10.9-5.5-20.8-15.7-26.3z\"></path>\n );\n case \"op\":\n return (\n <>\n <path\n fill=\"#ff0420\"\n d=\"M42 84c23.196 0 42-18.804 42-42S65.196 0 42 0 0 18.804 0 42s18.804 42 42 42\"\n />\n <path\n fill=\"#fff\"\n d=\"M30.461 53.76q-3.8 0-6.226-1.83-2.395-1.861-2.395-5.291 0-.72.16-1.764.414-2.352 1.181-5.651 2.171-8.984 11.208-8.984 2.46 0 4.407.85 1.947.817 3.065 2.482 1.118 1.635 1.118 3.92 0 .687-.16 1.732a76 76 0 0 1-1.15 5.65q-1.116 4.476-3.863 6.697-2.747 2.19-7.345 2.19Zm.448-4.704q1.788 0 3.033-1.078 1.277-1.077 1.82-3.3.735-3.07 1.118-5.356.127-.687.127-1.405 0-2.973-3.033-2.973-1.788 0-3.065 1.078-1.245 1.078-1.789 3.3-.574 2.188-1.15 5.357a7 7 0 0 0-.127 1.372q0 3.005 3.066 3.005m13.536 4.377q-.351 0-.543-.229a.8.8 0 0 1-.096-.588l4.407-21.233a.94.94 0 0 1 .351-.588.96.96 0 0 1 .607-.229h8.494q3.544 0 5.684 1.503 2.17 1.503 2.171 4.345a8 8 0 0 1-.192 1.698q-.798 3.757-3.225 5.554-2.395 1.797-6.578 1.797h-4.31l-1.47 7.153a.94.94 0 0 1-.35.588.96.96 0 0 1-.607.23zm11.304-12.478q1.34 0 2.33-.752 1.023-.751 1.342-2.156.096-.555.096-.98 0-.947-.543-1.437-.544-.523-1.852-.523H53.29l-1.213 5.848z\"\n />\n </>\n );\n case \"sol\":\n return (\n <>\n <path d=\"M250 0c138 0 250 111.9 250 250S388 500 250 500 0 388 0 250 111.9 0 250 0\" />\n <linearGradient\n id=\"SolIcon_svg__a\"\n x1=\"242.52\"\n x2=\"755.68\"\n y1=\"267.33\"\n y2=\"-245.83\"\n gradientTransform=\"matrix(.5 0 0 .5 0 250)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" style={{ stopColor: \"rgb(203, 78, 232)\" }} />\n <stop offset=\"1\" style={{ stopColor: \"rgb(16, 244, 177)\" }} />\n </linearGradient>\n <path\n d=\"M115.6 226.1H347c2.9 0 5.6 1.1 7.6 3.2l36.6 36.8c6.8 6.8 2 18.4-7.6 18.4H152.2c-2.9 0-5.6-1.1-7.6-3.2L108 244.5c-6.8-6.7-2-18.4 7.6-18.4m-7.7-48.8 36.6-36.8c2.1-2.1 4.8-3.2 7.6-3.2h231.3c9.6 0 14.5 11.6 7.6 18.4l-36.5 36.8c-2 2.1-4.8 3.2-7.6 3.2H115.6c-9.6 0-14.4-11.6-7.7-18.4m283.2 156.2-36.6 36.9c-2 2-4.8 3.2-7.6 3.2H115.6c-9.6 0-14.4-11.6-7.7-18.4l36.6-36.9c2.1-2 4.8-3.2 7.6-3.2h231.3c9.7-.1 14.6 11.5 7.7 18.4\"\n style={{\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"url(#SolIcon_svg__a)\",\n }}\n />\n </>\n );\n case \"zora\":\n return (\n <>\n <path\n fill=\"url(#ZoraIcon_svg__a)\"\n d=\"M70.615 141.23C31.615 141.23 0 109.615 0 70.615S31.616 0 70.615 0c39 0 70.615 31.615 70.615 70.615s-31.615 70.615-70.614 70.615Z\"\n />\n <defs>\n <radialGradient\n id=\"ZoraIcon_svg__a\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientTransform=\"translate(102.676 37.972)scale(-119.284)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.007\" stopColor=\"#f2cefe\" />\n <stop offset=\"0.191\" stopColor=\"#afbaf1\" />\n <stop offset=\"0.498\" stopColor=\"#4281d3\" />\n <stop offset=\"0.667\" stopColor=\"#2e427d\" />\n <stop offset=\"0.823\" stopColor=\"#230101\" />\n <stop offset=\"1\" stopColor=\"#8f6b40\" />\n </radialGradient>\n </defs>\n </>\n );\n default:\n return null;\n }\n };\n\n const getViewBox = () => {\n switch (chain) {\n case \"eth\":\n return \"0 0 20 20\";\n case \"arb\":\n return \"0 0 40 44\";\n case \"base\":\n return \"0 0 111 111\";\n case \"bitcoin\":\n return \"0 0 500 500\";\n case \"op\":\n return \"0 0 84 84\";\n case \"sol\":\n return \"0 0 500 500\";\n case \"zora\":\n return \"0 0 142 142\";\n default:\n return \"0 0 24 24\";\n }\n };\n\n return (\n <div className={`ns-chain-icon ${className || \"\"}`}>\n <svg\n width={size}\n height={size}\n viewBox={getViewBox()}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n {renderIcon()}\n {chain === \"eth\" && (\n <defs>\n <clipPath id=\"clip0_597_2890\">\n <rect\n width=\"19\"\n height=\"19\"\n fill=\"white\"\n transform=\"translate(0.255859 0.5)\"\n />\n </clipPath>\n </defs>\n )}\n </svg>\n </div>\n );\n};\n","import React, { useState, useRef, useEffect, ReactNode } from 'react';\nimport './Tooltip.css';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n\nexport interface TooltipProps {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n trigger?: 'hover' | 'click' | 'focus';\n maxWidth?: number;\n offset?: number;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n content,\n position = 'top',\n delay = 200,\n disabled = false,\n className = '',\n contentClassName = '',\n trigger = 'hover',\n maxWidth = 200,\n offset = 8,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | undefined>(undefined);\n\n const showTooltip = () => {\n if (disabled) return;\n \n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n \n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const hideTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n const calculatePosition = () => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n const baseOffset = offset;\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n\n // Calculate initial position based on the specified position\n switch (position) {\n case 'top':\n top = triggerRect.top - tooltipRect.height - baseOffset;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case 'bottom':\n top = triggerRect.bottom + baseOffset;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case 'left':\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - baseOffset;\n break;\n case 'right':\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.right + baseOffset;\n break;\n case 'top-start':\n top = triggerRect.top - tooltipRect.height - baseOffset;\n left = triggerRect.left;\n break;\n case 'top-end':\n top = triggerRect.top - tooltipRect.height - baseOffset;\n left = triggerRect.right - tooltipRect.width;\n break;\n case 'bottom-start':\n top = triggerRect.bottom + baseOffset;\n left = triggerRect.left;\n break;\n case 'bottom-end':\n top = triggerRect.bottom + baseOffset;\n left = triggerRect.right - tooltipRect.width;\n break;\n }\n\n // Smart viewport boundary detection and adjustment\n const margin = 8;\n \n // Horizontal adjustments\n if (left < margin) {\n left = margin;\n } else if (left + tooltipRect.width > viewport.width - margin) {\n left = viewport.width - tooltipRect.width - margin;\n }\n\n // Vertical adjustments\n if (top < margin) {\n // If tooltip would go above viewport, try to position it below\n if (position.includes('top')) {\n top = triggerRect.bottom + baseOffset;\n } else {\n top = margin;\n }\n } else if (top + tooltipRect.height > viewport.height - margin) {\n // If tooltip would go below viewport, try to position it above\n if (position.includes('bottom')) {\n top = triggerRect.top - tooltipRect.height - baseOffset;\n } else {\n top = viewport.height - tooltipRect.height - margin;\n }\n }\n\n // Final safety check - if still out of bounds, center it\n if (left < margin) left = margin;\n if (left + tooltipRect.width > viewport.width - margin) {\n left = Math.max(margin, viewport.width - tooltipRect.width - margin);\n }\n if (top < margin) top = margin;\n if (top + tooltipRect.height > viewport.height - margin) {\n top = Math.max(margin, viewport.height - tooltipRect.height - margin);\n }\n\n setTooltipPosition({ top, left });\n };\n\n useEffect(() => {\n if (isVisible) {\n // Small delay to ensure tooltip is rendered before positioning\n const timeoutId = setTimeout(() => {\n calculatePosition();\n }, 0);\n \n return () => clearTimeout(timeoutId);\n }\n }, [isVisible, position, offset]);\n\n useEffect(() => {\n const handleScroll = () => {\n if (isVisible) {\n calculatePosition();\n }\n };\n\n const handleResize = () => {\n if (isVisible) {\n calculatePosition();\n }\n };\n\n if (isVisible) {\n window.addEventListener('scroll', handleScroll, true);\n window.addEventListener('resize', handleResize);\n }\n\n return () => {\n window.removeEventListener('scroll', handleScroll, true);\n window.removeEventListener('resize', handleResize);\n };\n }, [isVisible]);\n\n const handleMouseEnter = () => {\n if (trigger === 'hover') showTooltip();\n };\n\n const handleMouseLeave = () => {\n if (trigger === 'hover') hideTooltip();\n };\n\n const handleClick = () => {\n if (trigger === 'click') {\n if (isVisible) {\n hideTooltip();\n } else {\n showTooltip();\n }\n }\n };\n\n const handleFocus = () => {\n if (trigger === 'focus') showTooltip();\n };\n\n const handleBlur = () => {\n if (trigger === 'focus') hideTooltip();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape' && isVisible) {\n hideTooltip();\n }\n };\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={triggerRef}\n className={`ns-tooltip-trigger ${className}`}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n tabIndex={trigger === 'focus' ? 0 : undefined}\n >\n {children}\n {isVisible && content && (\n <div\n ref={tooltipRef}\n className={`ns-tooltip ns-tooltip--${position} ${contentClassName}`}\n style={{\n top: tooltipPosition.top,\n left: tooltipPosition.left,\n maxWidth: maxWidth,\n }}\n role=\"tooltip\"\n aria-live=\"polite\"\n >\n <div className=\"ns-tooltip__content\">\n {content}\n </div>\n <div className={`ns-tooltip__arrow ns-tooltip__arrow--${position}`} />\n </div>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n","export const capitalize = (value: string) => {\n return value.charAt(0).toLocaleUpperCase() + value.substring(1);\n};\n\nexport const equalsIgnoreCase = (a: string, b: string) => {\n return a.toLocaleLowerCase() === b.toLocaleLowerCase();\n}\n\nexport const deepCopy = (a: any): any => {\n return JSON.parse(JSON.stringify(a));\n}","export function convertEVMChainIdToCoinType(chainId: number) {\n return (0x80000000 | chainId) >>> 0;\n}\n","import {\n EnsAddressRecord,\n EnsContenthashRecord,\n EnsRecords,\n EnsTextRecord,\n} from \"@/types\";\nimport { Hash } from \"viem\";\n\nexport interface EnsRecordsDiff {\n textsAdded: EnsTextRecord[];\n textsModified: EnsTextRecord[];\n textsRemoved: EnsTextRecord[];\n addressesAdded: EnsAddressRecord[];\n addressesRemoved: EnsAddressRecord[];\n addressesModified: EnsAddressRecord[];\n contenthashAdded?: EnsContenthashRecord;\n contenthashRemoved: boolean;\n contenthashModified?: EnsContenthashRecord;\n}\n\nexport const getEnsRecordsDiff = (\n oldRecords: EnsRecords,\n newRecords: EnsRecords\n): EnsRecordsDiff => {\n const { textsAdded, textsModified, textsRemoved } = getEnsTextDiff(\n oldRecords.texts,\n newRecords.texts\n );\n const { addressesAdded, addressesModified, addressesRemoved } =\n getEnsAddressDiff(oldRecords.addresses, newRecords.addresses);\n const { contenthashAdded, contenthashModified, contenthashRemoved } =\n getEnsContenthashDiff(oldRecords.contenthash, newRecords.contenthash);\n\n return {\n addressesAdded: addressesAdded as EnsAddressRecord[],\n addressesModified: addressesModified as EnsAddressRecord[],\n addressesRemoved: addressesRemoved as EnsAddressRecord[],\n textsAdded: textsAdded as EnsTextRecord[],\n textsModified: textsModified as EnsTextRecord[],\n textsRemoved: textsRemoved as EnsTextRecord[],\n contenthashAdded,\n contenthashModified,\n contenthashRemoved: contenthashRemoved as boolean,\n };\n};\n\nconst getEnsTextDiff = (\n oldTexts: EnsTextRecord[],\n newTexts: EnsTextRecord[]\n): Partial<EnsRecordsDiff> => {\n if (oldTexts.length === 0) {\n return {\n textsAdded: newTexts,\n textsModified: [],\n textsRemoved: [],\n };\n }\n\n const oldTextMap: Record<string, EnsTextRecord> = {};\n const textsRemoved: EnsTextRecord[] = [];\n\n oldTexts.forEach(text => {\n oldTextMap[text.key] = text;\n\n // check to see if text exists in old but not in new\n const existsInNew = newTexts.find(newText => newText.key === text.key);\n if (!existsInNew) {\n textsRemoved.push(text);\n }\n });\n\n const textsAdded: EnsTextRecord[] = [];\n const textsModified: EnsTextRecord[] = [];\n\n // Check to see if there are new texts\n // that dont exist in old ones\n // or exist and are modified\n newTexts.forEach(newText => {\n const matchingOldText = oldTextMap[newText.key];\n if (!matchingOldText) {\n textsAdded.push(newText);\n } else if (matchingOldText.value !== newText.value) {\n textsModified.push(newText);\n }\n });\n\n return {\n textsAdded,\n textsModified,\n textsRemoved,\n };\n};\n\nconst getEnsAddressDiff = (\n oldAddresses: EnsAddressRecord[],\n newAddresses: EnsAddressRecord[]\n): Partial<EnsRecordsDiff> => {\n if (oldAddresses.length === 0) {\n return {\n addressesAdded: newAddresses,\n addressesModified: [],\n addressesRemoved: [],\n };\n }\n\n const oldAddressMap: Record<string, EnsAddressRecord> = {};\n const addressesRemoved: EnsAddressRecord[] = [];\n\n oldAddresses.forEach(address => {\n oldAddressMap[address.coinType] = address;\n\n // check to see if text exists in old but not in new\n const existsInNew = newAddresses.find(\n newAddress => newAddress.coinType === address.coinType\n );\n if (!existsInNew) {\n addressesRemoved.push(address);\n }\n });\n\n const addressesAdded: EnsAddressRecord[] = [];\n const addressesModified: EnsAddressRecord[] = [];\n\n // Check to see if there are new texts\n // that dont exist in old ones\n // or exist and are modified\n newAddresses.forEach(newAddress => {\n const matchinOldAddress = oldAddressMap[newAddress.coinType];\n if (!matchinOldAddress) {\n addressesAdded.push(newAddress);\n } else if (matchinOldAddress.value !== newAddress.value) {\n addressesModified.push(newAddress);\n }\n });\n\n return {\n addressesAdded,\n addressesModified,\n addressesRemoved,\n };\n};\n\nconst getEnsContenthashDiff = (\n oldRecord: EnsContenthashRecord | undefined,\n newRecord: EnsContenthashRecord | undefined\n): Partial<EnsRecordsDiff> => {\n if (!oldRecord && !newRecord) {\n return {\n contenthashRemoved: false,\n contenthashAdded: undefined,\n contenthashModified: undefined,\n };\n }\n\n if (!oldRecord && newRecord) {\n return {\n contenthashRemoved: false,\n contenthashAdded: newRecord,\n contenthashModified: undefined,\n };\n }\n\n const isSame =\n oldRecord?.protocol === newRecord?.protocol &&\n oldRecord?.value === newRecord?.value;\n return {\n contenthashAdded: undefined,\n contenthashModified: isSame ? undefined : newRecord,\n contenthashRemoved: false,\n };\n};","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function createOptHasher(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function createXOFer(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor(outputLen = 32) {\n super(64, outputLen, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\nexport class SHA224 extends SHA256 {\n constructor() {\n super(28);\n this.A = SHA224_IV[0] | 0;\n this.B = SHA224_IV[1] | 0;\n this.C = SHA224_IV[2] | 0;\n this.D = SHA224_IV[3] | 0;\n this.E = SHA224_IV[4] | 0;\n this.F = SHA224_IV[5] | 0;\n this.G = SHA224_IV[6] | 0;\n this.H = SHA224_IV[7] | 0;\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor(outputLen = 64) {\n super(128, outputLen, 16, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = SHA512_IV[0] | 0;\n this.Al = SHA512_IV[1] | 0;\n this.Bh = SHA512_IV[2] | 0;\n this.Bl = SHA512_IV[3] | 0;\n this.Ch = SHA512_IV[4] | 0;\n this.Cl = SHA512_IV[5] | 0;\n this.Dh = SHA512_IV[6] | 0;\n this.Dl = SHA512_IV[7] | 0;\n this.Eh = SHA512_IV[8] | 0;\n this.El = SHA512_IV[9] | 0;\n this.Fh = SHA512_IV[10] | 0;\n this.Fl = SHA512_IV[11] | 0;\n this.Gh = SHA512_IV[12] | 0;\n this.Gl = SHA512_IV[13] | 0;\n this.Hh = SHA512_IV[14] | 0;\n this.Hl = SHA512_IV[15] | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super(48);\n this.Ah = SHA384_IV[0] | 0;\n this.Al = SHA384_IV[1] | 0;\n this.Bh = SHA384_IV[2] | 0;\n this.Bl = SHA384_IV[3] | 0;\n this.Ch = SHA384_IV[4] | 0;\n this.Cl = SHA384_IV[5] | 0;\n this.Dh = SHA384_IV[6] | 0;\n this.Dl = SHA384_IV[7] | 0;\n this.Eh = SHA384_IV[8] | 0;\n this.El = SHA384_IV[9] | 0;\n this.Fh = SHA384_IV[10] | 0;\n this.Fl = SHA384_IV[11] | 0;\n this.Gh = SHA384_IV[12] | 0;\n this.Gl = SHA384_IV[13] | 0;\n this.Hh = SHA384_IV[14] | 0;\n this.Hl = SHA384_IV[15] | 0;\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super(28);\n this.Ah = T224_IV[0] | 0;\n this.Al = T224_IV[1] | 0;\n this.Bh = T224_IV[2] | 0;\n this.Bl = T224_IV[3] | 0;\n this.Ch = T224_IV[4] | 0;\n this.Cl = T224_IV[5] | 0;\n this.Dh = T224_IV[6] | 0;\n this.Dl = T224_IV[7] | 0;\n this.Eh = T224_IV[8] | 0;\n this.El = T224_IV[9] | 0;\n this.Fh = T224_IV[10] | 0;\n this.Fl = T224_IV[11] | 0;\n this.Gh = T224_IV[12] | 0;\n this.Gl = T224_IV[13] | 0;\n this.Hh = T224_IV[14] | 0;\n this.Hl = T224_IV[15] | 0;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super(32);\n this.Ah = T256_IV[0] | 0;\n this.Al = T256_IV[1] | 0;\n this.Bh = T256_IV[2] | 0;\n this.Bl = T256_IV[3] | 0;\n this.Ch = T256_IV[4] | 0;\n this.Cl = T256_IV[5] | 0;\n this.Dh = T256_IV[6] | 0;\n this.Dl = T256_IV[7] | 0;\n this.Eh = T256_IV[8] | 0;\n this.El = T256_IV[9] | 0;\n this.Fh = T256_IV[10] | 0;\n this.Fl = T256_IV[11] | 0;\n this.Gh = T256_IV[12] | 0;\n this.Gl = T256_IV[13] | 0;\n this.Hh = T256_IV[14] | 0;\n this.Hl = T256_IV[15] | 0;\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes } from \"./utils.js\";\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n ahash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf) {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n aexists(this);\n abytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes as abytes_, bytesToHex as bytesToHex_, concatBytes as concatBytes_, hexToBytes as hexToBytes_, isBytes as isBytes_, } from '@noble/hashes/utils.js';\nexport { abytes, anumber, bytesToHex, bytesToUtf8, concatBytes, hexToBytes, isBytes, randomBytes, utf8ToBytes, } from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function abool(title, value) {\n if (typeof value !== 'boolean')\n throw new Error(title + ' boolean expected, got ' + value);\n}\n// tmp name until v2\nexport function _abool2(value, title = '') {\n if (typeof value !== 'boolean') {\n const prefix = title && `\"${title}\"`;\n throw new Error(prefix + 'expected boolean, got type=' + typeof value);\n }\n return value;\n}\n// tmp name until v2\n/** Asserts something is Uint8Array. */\nexport function _abytes2(value, length, title = '') {\n const bytes = isBytes_(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes_(bytes);\n return hexToNumber(bytesToHex_(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes_(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'secret key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes_(hex);\n }\n catch (e) {\n throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n }\n }\n else if (isBytes_(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(title + ' must be hex string or Uint8Array');\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,\n * and Buffer#slice creates mutable copy. Never use Buffers!\n */\nexport function copyBytes(bytes) {\n return Uint8Array.from(bytes);\n}\n/**\n * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols\n * Should be safe to use for things expected to be ASCII.\n * Returns exact same result as utf8ToBytes for ASCII or throws.\n */\nexport function asciiToBytes(ascii) {\n return Uint8Array.from(ascii, (c, i) => {\n const charCode = c.charCodeAt(0);\n if (c.length !== 1 || charCode > 127) {\n throw new Error(`string contains non-ASCII character \"${ascii[i]}\" with code ${charCode} at position ${i}`);\n }\n return charCode;\n });\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\n// export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\n// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG<Key>(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n const u8n = (len) => new Uint8Array(len); // creates Uint8Array\n const u8of = (byte) => Uint8Array.of(byte); // another shortcut\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n(0)) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8of(0x00), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8of(0x01), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes_(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes_(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error('invalid validator function');\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\nexport function isHash(val) {\n return typeof val === 'function' && Number.isSafeInteger(val.outputLen);\n}\nexport function _validateObject(object, fields, optFields = {}) {\n if (!object || typeof object !== 'object')\n throw new Error('expected valid options object');\n function checkField(fieldName, expectedType, isOpt) {\n const val = object[fieldName];\n if (isOpt && val === undefined)\n return;\n const current = typeof val;\n if (current !== expectedType || val === null)\n throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n }\n Object.entries(fields).forEach(([k, v]) => checkField(k, v, false));\n Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true));\n}\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map","/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { _validateObject, anumber, bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, } from \"../utils.js\";\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _7n = /* @__PURE__ */ BigInt(7);\n// prettier-ignore\nconst _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n if (number === _0n)\n throw new Error('invert: expected non-zero number');\n if (modulo <= _0n)\n throw new Error('invert: expected positive modulus, got ' + modulo);\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction assertIsSquare(Fp, root, n) {\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n const p1div4 = (Fp.ORDER + _1n) / _4n;\n const root = Fp.pow(n, p1div4);\n assertIsSquare(Fp, root, n);\n return root;\n}\nfunction sqrt5mod8(Fp, n) {\n const p5div8 = (Fp.ORDER - _5n) / _8n;\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, p5div8);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n assertIsSquare(Fp, root, n);\n return root;\n}\n// Based on RFC9380, Kong algorithm\n// prettier-ignore\nfunction sqrt9mod16(P) {\n const Fp_ = Field(P);\n const tn = tonelliShanks(P);\n const c1 = tn(Fp_, Fp_.neg(Fp_.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n const c2 = tn(Fp_, c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n const c3 = tn(Fp_, Fp_.neg(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n return (Fp, n) => {\n let tv1 = Fp.pow(n, c4); // 1. tv1 = x^c4\n let tv2 = Fp.mul(tv1, c1); // 2. tv2 = c1 * tv1\n const tv3 = Fp.mul(tv1, c2); // 3. tv3 = c2 * tv1\n const tv4 = Fp.mul(tv1, c3); // 4. tv4 = c3 * tv1\n const e1 = Fp.eql(Fp.sqr(tv2), n); // 5. e1 = (tv2^2) == x\n const e2 = Fp.eql(Fp.sqr(tv3), n); // 6. e2 = (tv3^2) == x\n tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n const e3 = Fp.eql(Fp.sqr(tv2), n); // 9. e3 = (tv2^2) == x\n const root = Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select sqrt from tv1 & tv2\n assertIsSquare(Fp, root, n);\n return root;\n };\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Initialization (precomputation).\n // Caching initialization could boost perf by 7%.\n if (P < _3n)\n throw new Error('sqrt is not defined for small field');\n // Factor P - 1 = Q * 2^S, where Q is odd\n let Q = P - _1n;\n let S = 0;\n while (Q % _2n === _0n) {\n Q /= _2n;\n S++;\n }\n // Find the first quadratic non-residue Z >= 2\n let Z = _2n;\n const _Fp = Field(P);\n while (FpLegendre(_Fp, Z) === 1) {\n // Basic primality test for P. After x iterations, chance of\n // not finding quadratic non-residue is 2^x, so 2^1000.\n if (Z++ > 1000)\n throw new Error('Cannot find square root: probably non-prime P');\n }\n // Fast-path; usually done before Z, but we do \"primality test\".\n if (S === 1)\n return sqrt3mod4;\n // Slow-path\n // TODO: test on Fp2 and others\n let cc = _Fp.pow(Z, Q); // c = z^Q\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n if (Fp.is0(n))\n return n;\n // Check if n is a quadratic residue using Legendre symbol\n if (FpLegendre(Fp, n) !== 1)\n throw new Error('Cannot find square root');\n // Initialize variables for the main loop\n let M = S;\n let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n // Main loop\n // while t != 1\n while (!Fp.eql(t, Fp.ONE)) {\n if (Fp.is0(t))\n return Fp.ZERO; // if t=0 return R=0\n let i = 1;\n // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n let t_tmp = Fp.sqr(t); // t^(2^1)\n while (!Fp.eql(t_tmp, Fp.ONE)) {\n i++;\n t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n if (i === M)\n throw new Error('Cannot find square root');\n }\n // Calculate the exponent for b: 2^(M - i - 1)\n const exponent = _1n << BigInt(M - i - 1); // bigint is important\n const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n // Update variables\n M = i;\n c = Fp.sqr(b); // c = b^2\n t = Fp.mul(t, c); // t = (t * b^2)\n R = Fp.mul(R, b); // R = R*b\n }\n return R;\n };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. P ≡ 9 (mod 16)\n * 4. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n if (P % _4n === _3n)\n return sqrt3mod4;\n // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n if (P % _8n === _5n)\n return sqrt5mod8;\n // P ≡ 9 (mod 16) => Kong algorithm, page 11 of https://eprint.iacr.org/2012/685.pdf (algorithm 4)\n if (P % _16n === _9n)\n return sqrt9mod16(P);\n // Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'number',\n BITS: 'number',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n _validateObject(field, opts);\n // const max = 16384;\n // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n return field;\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n if (power < _0n)\n throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n)\n return Fp.ONE;\n if (power === _1n)\n return num;\n let p = Fp.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = Fp.mul(p, d);\n d = Fp.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n // Walk from first to last, multiply them by each other MOD p\n const multipliedAcc = nums.reduce((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = acc;\n return Fp.mul(acc, num);\n }, Fp.ONE);\n // Invert last element\n const invertedAcc = Fp.inv(multipliedAcc);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = Fp.mul(acc, inverted[i]);\n return Fp.mul(acc, num);\n }, invertedAcc);\n return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0 if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n // We can use 3rd argument as optional cache of this value\n // but seems unneeded for now. The operation is very fast.\n const p1mod2 = (Fp.ORDER - _1n) / _2n;\n const powered = Fp.pow(n, p1mod2);\n const yes = Fp.eql(powered, Fp.ONE);\n const zero = Fp.eql(powered, Fp.ZERO);\n const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n if (!yes && !zero && !no)\n throw new Error('invalid Legendre symbol result');\n return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n const l = FpLegendre(Fp, n);\n return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n if (nBitLength !== undefined)\n anumber(nBitLength);\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLenOrOpts, // TODO: use opts only in v2?\nisLE = false, opts = {}) {\n if (ORDER <= _0n)\n throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n let _nbitLength = undefined;\n let _sqrt = undefined;\n let modFromBytes = false;\n let allowedLengths = undefined;\n if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {\n if (opts.sqrt || isLE)\n throw new Error('cannot specify opts in two arguments');\n const _opts = bitLenOrOpts;\n if (_opts.BITS)\n _nbitLength = _opts.BITS;\n if (_opts.sqrt)\n _sqrt = _opts.sqrt;\n if (typeof _opts.isLE === 'boolean')\n isLE = _opts.isLE;\n if (typeof _opts.modFromBytes === 'boolean')\n modFromBytes = _opts.modFromBytes;\n allowedLengths = _opts.allowedLengths;\n }\n else {\n if (typeof bitLenOrOpts === 'number')\n _nbitLength = bitLenOrOpts;\n if (opts.sqrt)\n _sqrt = opts.sqrt;\n }\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, _nbitLength);\n if (BYTES > 2048)\n throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n let sqrtP; // cached sqrtP\n const f = Object.freeze({\n ORDER,\n isLE,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n allowedLengths: allowedLengths,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n // is valid and invertible\n isValidNot0: (num) => !f.is0(num) && f.isValid(num),\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: _sqrt ||\n ((n) => {\n if (!sqrtP)\n sqrtP = FpSqrt(ORDER);\n return sqrtP(f, n);\n }),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes, skipValidation = true) => {\n if (allowedLengths) {\n if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {\n throw new Error('Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length);\n }\n const padded = new Uint8Array(BYTES);\n // isLE add 0 to right, !isLE to the left.\n padded.set(bytes, isLE ? 0 : padded.length - bytes.length);\n bytes = padded;\n }\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n if (modFromBytes)\n scalar = mod(scalar, ORDER);\n if (!skipValidation)\n if (!f.isValid(scalar))\n throw new Error('invalid field element: outside of range 0..ORDER');\n // NOTE: we don't validate scalar here, please use isValid. This done such way because some\n // protocol may allow non-reduced scalar that reduced later or changed some other way.\n return scalar;\n },\n // TODO: we don't need it here, move out to separate fn\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // We can't move this out because Fp6, Fp12 implement it\n // and it's unclear what to return in there.\n cmov: (a, b, c) => (c ? b : a),\n });\n return Object.freeze(f);\n}\n// Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?\n// This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).\n// which mean we cannot force this via opts.\n// Not sure what to do with randomBytes, we can accept it inside opts if wanted.\n// Probably need to export getMinHashLength somewhere?\n// random(bytes?: Uint8Array, unsafeAllowZero = false, unsafeAllowBias = false) {\n// const LEN = !unsafeAllowBias ? getMinHashLength(ORDER) : BYTES;\n// if (bytes === undefined) bytes = randomBytes(LEN); // _opts.randomBytes?\n// const num = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n// // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n// const reduced = unsafeAllowZero ? mod(num, ORDER) : mod(num, ORDER - _1n) + _1n;\n// return reduced;\n// },\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask, validateObject } from \"../utils.js\";\nimport { Field, FpInvertBatch, nLength, validateField } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nexport function negateCt(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ(c, points) {\n const invertedZs = FpInvertBatch(c.Fp, points.map((p) => p.Z));\n return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));\n}\nfunction validateW(W, bits) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n validateW(W, scalarBits);\n const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n const maxNumber = 2 ** W; // W=8 256\n const mask = bitMask(W); // W=8 255 == mask 0b11111111\n const shiftBy = BigInt(W); // W=8 8\n return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n let wbits = Number(n & mask); // extract W bits.\n let nextN = n >> shiftBy; // shift number by W bits.\n // What actually happens here:\n // const highestBit = Number(mask ^ (mask >> 1n));\n // let wbits2 = wbits - 1; // skip zero\n // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n // split if bits > max: +224 => 256-32\n if (wbits > windowSize) {\n // we skip zero, which means instead of `>= size-1`, we do `> size`\n wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n nextN += _1n; // +256 (carry)\n }\n const offsetStart = window * windowSize;\n const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n const isZero = wbits === 0; // is current window slice a 0?\n const isNeg = wbits < 0; // is current window slice negative?\n const isNegF = window % 2 !== 0; // fake random statement for noise\n const offsetF = offsetStart; // fake offset for noise\n return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n if (!Array.isArray(points))\n throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars, field) {\n if (!Array.isArray(scalars))\n throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error('invalid scalar at index ' + i);\n });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n // To disable precomputes:\n // return 1;\n return pointWindowSizes.get(P) || 1;\n}\nfunction assert0(n) {\n if (n !== _0n)\n throw new Error('invalid wNAF');\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Table generation takes **30MB of ram and 10ms on high-end CPU**,\n * but may take much longer on slow devices. Actual generation will happen on\n * first call of `multiply()`. By default, `BASE` point is precomputed.\n *\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport class wNAF {\n // Parametrized with a given Point class (not individual point)\n constructor(Point, bits) {\n this.BASE = Point.BASE;\n this.ZERO = Point.ZERO;\n this.Fn = Point.Fn;\n this.bits = bits;\n }\n // non-const time multiplication ladder\n _unsafeLadder(elm, n, p = this.ZERO) {\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param point Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(point, W) {\n const { windows, windowSize } = calcWOpts(W, this.bits);\n const points = [];\n let p = point;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // i=1, bc we skip 0\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * More compact implementation:\n * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // Scalar should be smaller than field order\n if (!this.Fn.isValid(n))\n throw new Error('invalid scalar');\n // Accumulators\n let p = this.ZERO;\n let f = this.BASE;\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // bits are 0: add garbage to fake point\n // Important part for const-time getPublicKey: add random \"noise\" point to f.\n f = f.add(negateCt(isNegF, precomputes[offsetF]));\n }\n else {\n // bits are 1: add to result point\n p = p.add(negateCt(isNeg, precomputes[offset]));\n }\n }\n assert0(n);\n // Return both real and fake points: JIT won't eliminate f.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n }\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n wNAFUnsafe(W, precomputes, n, acc = this.ZERO) {\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n if (n === _0n)\n break; // Early-exit, skip 0 value\n const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // Window bits are 0: skip processing.\n // Move to next window.\n continue;\n }\n else {\n const item = precomputes[offset];\n acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n }\n }\n assert0(n);\n return acc;\n }\n getPrecomputes(W, point, transform) {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(point);\n if (!comp) {\n comp = this.precomputeWindow(point, W);\n if (W !== 1) {\n // Doing transform outside of if brings 15% perf hit\n if (typeof transform === 'function')\n comp = transform(comp);\n pointPrecomputes.set(point, comp);\n }\n }\n return comp;\n }\n cached(point, scalar, transform) {\n const W = getW(point);\n return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);\n }\n unsafe(point, scalar, transform, prev) {\n const W = getW(point);\n if (W === 1)\n return this._unsafeLadder(point, scalar, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);\n }\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n createCache(P, W) {\n validateW(W, this.bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n }\n hasCache(elm) {\n return getW(elm) !== 1;\n }\n}\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe(Point, point, k1, k2) {\n let acc = point;\n let p1 = Point.ZERO;\n let p2 = Point.ZERO;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n p1 = p1.add(acc);\n if (k2 & _1n)\n p2 = p2.add(acc);\n acc = acc.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n return { p1, p2 };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka secret keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n const plength = points.length;\n const slength = scalars.length;\n if (plength !== slength)\n throw new Error('arrays of points and scalars must have equal length');\n // if (plength === 0) throw new Error('array must be of length >= 2');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(plength));\n let windowSize = 1; // bits\n if (wbits > 12)\n windowSize = wbits - 3;\n else if (wbits > 4)\n windowSize = wbits - 2;\n else if (wbits > 0)\n windowSize = 2;\n const MASK = bitMask(windowSize);\n const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < slength; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & MASK);\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n /**\n * Performance Analysis of Window-based Precomputation\n *\n * Base Case (256-bit scalar, 8-bit window):\n * - Standard precomputation requires:\n * - 31 additions per scalar × 256 scalars = 7,936 ops\n * - Plus 255 summary additions = 8,191 total ops\n * Note: Summary additions can be optimized via accumulator\n *\n * Chunked Precomputation Analysis:\n * - Using 32 chunks requires:\n * - 255 additions per chunk\n * - 256 doublings\n * - Total: (255 × 32) + 256 = 8,416 ops\n *\n * Memory Usage Comparison:\n * Window Size | Standard Points | Chunked Points\n * ------------|-----------------|---------------\n * 4-bit | 520 | 15\n * 8-bit | 4,224 | 255\n * 10-bit | 13,824 | 1,023\n * 16-bit | 557,056 | 65,535\n *\n * Key Advantages:\n * 1. Enables larger window sizes due to reduced memory overhead\n * 2. More efficient for smaller scalar counts:\n * - 16 chunks: (16 × 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = bitMask(windowSize);\n const tables = points.map((p) => {\n const res = [];\n for (let i = 0, acc = p; i < tableSize; i++) {\n res.push(acc);\n acc = acc.add(p);\n }\n return res;\n });\n return (scalars) => {\n validateMSMScalars(scalars, fieldN);\n if (scalars.length > points.length)\n throw new Error('array of scalars must be smaller than array of points');\n let res = zero;\n for (let i = 0; i < chunks; i++) {\n // No need to double if accumulator is still zero.\n if (res !== zero)\n for (let j = 0; j < windowSize; j++)\n res = res.double();\n const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n for (let j = 0; j < scalars.length; j++) {\n const n = scalars[j];\n const curr = Number((n >> shiftBy) & MASK);\n if (!curr)\n continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\n// TODO: remove\n/** @deprecated */\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\nfunction createField(order, field, isLE) {\n if (field) {\n if (field.ORDER !== order)\n throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n validateField(field);\n return field;\n }\n else {\n return Field(order, { isLE });\n }\n}\n/** Validates CURVE opts and creates fields */\nexport function _createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {\n if (FpFnLE === undefined)\n FpFnLE = type === 'edwards';\n if (!CURVE || typeof CURVE !== 'object')\n throw new Error(`expected valid ${type} CURVE object`);\n for (const p of ['p', 'n', 'h']) {\n const val = CURVE[p];\n if (!(typeof val === 'bigint' && val > _0n))\n throw new Error(`CURVE.${p} must be positive bigint`);\n }\n const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);\n const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);\n const _b = type === 'weierstrass' ? 'b' : 'd';\n const params = ['Gx', 'Gy', 'a', _b];\n for (const p of params) {\n // @ts-ignore\n if (!Fp.isValid(CURVE[p]))\n throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n }\n CURVE = Object.freeze(Object.assign({}, CURVE));\n return { CURVE, Fp, Fn };\n}\n//# sourceMappingURL=curve.js.map","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac as nobleHmac } from '@noble/hashes/hmac.js';\nimport { ahash } from '@noble/hashes/utils';\nimport { _validateObject, _abool2 as abool, _abytes2 as abytes, aInRange, bitLen, bitMask, bytesToHex, bytesToNumberBE, concatBytes, createHmacDrbg, ensureBytes, hexToBytes, inRange, isBytes, memoized, numberToHexUnpadded, randomBytes as randomBytesWeb, } from \"../utils.js\";\nimport { _createCurveFields, mulEndoUnsafe, negateCt, normalizeZ, pippenger, wNAF, } from \"./curve.js\";\nimport { Field, FpInvertBatch, getMinHashLength, mapHashToField, nLength, validateField, } from \"./modular.js\";\n// We construct basis in such way that den is always positive and equals n, but num sign depends on basis (not on secret value)\nconst divNearest = (num, den) => (num + (num >= 0 ? den : -den) / _2n) / den;\n/**\n * Splits scalar for GLV endomorphism.\n */\nexport function _splitEndoScalar(k, basis, n) {\n // Split scalar into two such that part is ~half bits: `abs(part) < sqrt(N)`\n // Since part can be negative, we need to do this on point.\n // TODO: verifyScalar function which consumes lambda\n const [[a1, b1], [a2, b2]] = basis;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n // |k1|/|k2| is < sqrt(N), but can be negative.\n // If we do `k1 mod N`, we'll get big scalar (`> sqrt(N)`): so, we do cheaper negation instead.\n let k1 = k - c1 * a1 - c2 * a2;\n let k2 = -c1 * b1 - c2 * b2;\n const k1neg = k1 < _0n;\n const k2neg = k2 < _0n;\n if (k1neg)\n k1 = -k1;\n if (k2neg)\n k2 = -k2;\n // Double check that resulting scalar less than half bits of N: otherwise wNAF will fail.\n // This should only happen on wrong basises. Also, math inside is too complex and I don't trust it.\n const MAX_NUM = bitMask(Math.ceil(bitLen(n) / 2)) + _1n; // Half bits of N\n if (k1 < _0n || k1 >= MAX_NUM || k2 < _0n || k2 >= MAX_NUM) {\n throw new Error('splitScalar (endomorphism): failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction validateSigFormat(format) {\n if (!['compact', 'recovered', 'der'].includes(format))\n throw new Error('Signature format must be \"compact\", \"recovered\", or \"der\"');\n return format;\n}\nfunction validateSigOpts(opts, def) {\n const optsn = {};\n for (let optName of Object.keys(def)) {\n // @ts-ignore\n optsn[optName] = opts[optName] === undefined ? def[optName] : opts[optName];\n }\n abool(optsn.lowS, 'lowS');\n abool(optsn.prehash, 'prehash');\n if (optsn.format !== undefined)\n validateSigFormat(optsn.format);\n return optsn;\n}\nexport class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n}\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: DERErr,\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag, data) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length & 1)\n throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 128)\n throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 128) : '';\n const t = numberToHexUnpadded(tag);\n return t + lenLen + len + data;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag, data) {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag)\n throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong)\n length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 127;\n if (!lenLen)\n throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4)\n throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen)\n throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0)\n throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes)\n length = (length << 8) | b;\n pos += lenLen;\n if (length < 128)\n throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length)\n throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num) {\n const { Err: E } = DER;\n if (num < _0n)\n throw new E('integer: negative integers are not allowed');\n let hex = numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000)\n hex = '00' + hex;\n if (hex.length & 1)\n throw new E('unexpected DER parsing assertion: unpadded hex');\n return hex;\n },\n decode(data) {\n const { Err: E } = DER;\n if (data[0] & 128)\n throw new E('invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 128))\n throw new E('invalid signature integer: unnecessary leading zero');\n return bytesToNumberBE(data);\n },\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = ensureBytes('signature', hex);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig) {\n const { _tlv: tlv, _int: int } = DER;\n const rs = tlv.encode(0x02, int.encode(sig.r));\n const ss = tlv.encode(0x02, int.encode(sig.s));\n const seq = rs + ss;\n return tlv.encode(0x30, seq);\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function _normFnElement(Fn, key) {\n const { BYTES: expected } = Fn;\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else {\n let bytes = ensureBytes('private key', key);\n try {\n num = Fn.fromBytes(bytes);\n }\n catch (error) {\n throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`);\n }\n }\n if (!Fn.isValidNot0(num))\n throw new Error('invalid private key: out of range [1..N-1]');\n return num;\n}\n/**\n * Creates weierstrass Point constructor, based on specified curve options.\n *\n * @example\n```js\nconst opts = {\n p: BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'),\n n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),\n h: BigInt(1),\n a: BigInt('0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc'),\n b: BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b'),\n Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),\n Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),\n};\nconst p256_Point = weierstrass(opts);\n```\n */\nexport function weierstrassN(params, extraOpts = {}) {\n const validated = _createCurveFields('weierstrass', params, extraOpts);\n const { Fp, Fn } = validated;\n let CURVE = validated.CURVE;\n const { h: cofactor, n: CURVE_ORDER } = CURVE;\n _validateObject(extraOpts, {}, {\n allowInfinityPoint: 'boolean',\n clearCofactor: 'function',\n isTorsionFree: 'function',\n fromBytes: 'function',\n toBytes: 'function',\n endo: 'object',\n wrapPrivateKey: 'boolean',\n });\n const { endo } = extraOpts;\n if (endo) {\n // validateObject(endo, { beta: 'bigint', splitScalar: 'function' });\n if (!Fp.is0(CURVE.a) || typeof endo.beta !== 'bigint' || !Array.isArray(endo.basises)) {\n throw new Error('invalid endo: expected \"beta\": bigint and \"basises\": array');\n }\n }\n const lengths = getWLengths(Fp, Fn);\n function assertCompressionIsSupported() {\n if (!Fp.isOdd)\n throw new Error('compression is not supported: Field does not have .isOdd()');\n }\n // Implements IEEE P1363 point encoding\n function pointToBytes(_c, point, isCompressed) {\n const { x, y } = point.toAffine();\n const bx = Fp.toBytes(x);\n abool(isCompressed, 'isCompressed');\n if (isCompressed) {\n assertCompressionIsSupported();\n const hasEvenY = !Fp.isOdd(y);\n return concatBytes(pprefix(hasEvenY), bx);\n }\n else {\n return concatBytes(Uint8Array.of(0x04), bx, Fp.toBytes(y));\n }\n }\n function pointFromBytes(bytes) {\n abytes(bytes, undefined, 'Point');\n const { publicKey: comp, publicKeyUncompressed: uncomp } = lengths; // e.g. for 32-byte: 33, 65\n const length = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // No actual validation is done here: use .assertValidity()\n if (length === comp && (head === 0x02 || head === 0x03)) {\n const x = Fp.fromBytes(tail);\n if (!Fp.isValid(x))\n throw new Error('bad point: is not on curve, wrong x');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const err = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('bad point: is not on curve, sqrt error' + err);\n }\n assertCompressionIsSupported();\n const isYOdd = Fp.isOdd(y); // (y & _1n) === _1n;\n const isHeadOdd = (head & 1) === 1; // ECDSA-specific\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (length === uncomp && head === 0x04) {\n // TODO: more checks\n const L = Fp.BYTES;\n const x = Fp.fromBytes(tail.subarray(0, L));\n const y = Fp.fromBytes(tail.subarray(L, L * 2));\n if (!isValidXY(x, y))\n throw new Error('bad point: is not on curve');\n return { x, y };\n }\n else {\n throw new Error(`bad point: got length ${length}, expected compressed=${comp} or uncompressed=${uncomp}`);\n }\n }\n const encodePoint = extraOpts.toBytes || pointToBytes;\n const decodePoint = extraOpts.fromBytes || pointFromBytes;\n function weierstrassEquation(x) {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x² * x\n return Fp.add(Fp.add(x3, Fp.mul(x, CURVE.a)), CURVE.b); // x³ + a * x + b\n }\n // TODO: move top-level\n /** Checks whether equation holds for given x, y: y² == x³ + ax + b */\n function isValidXY(x, y) {\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n return Fp.eql(left, right);\n }\n // Validate whether the passed curve params are valid.\n // Test 1: equation y² = x³ + ax + b should work for generator point.\n if (!isValidXY(CURVE.Gx, CURVE.Gy))\n throw new Error('bad curve params: generator point');\n // Test 2: discriminant Δ part should be non-zero: 4a³ + 27b² != 0.\n // Guarantees curve is genus-1, smooth (non-singular).\n const _4a3 = Fp.mul(Fp.pow(CURVE.a, _3n), _4n);\n const _27b2 = Fp.mul(Fp.sqr(CURVE.b), BigInt(27));\n if (Fp.is0(Fp.add(_4a3, _27b2)))\n throw new Error('bad curve params: a or b');\n /** Asserts coordinate is valid: 0 <= n < Fp.ORDER. */\n function acoord(title, n, banZero = false) {\n if (!Fp.isValid(n) || (banZero && Fp.is0(n)))\n throw new Error(`bad point coordinate ${title}`);\n return n;\n }\n function aprjpoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n function splitEndoScalarN(k) {\n if (!endo || !endo.basises)\n throw new Error('no endo');\n return _splitEndoScalar(k, endo.basises, Fn.ORDER);\n }\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n const toAffineMemo = memoized((p, iz) => {\n const { X, Y, Z } = p;\n // Fast-path for normalized points\n if (Fp.eql(Z, Fp.ONE))\n return { x: X, y: Y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(Z);\n const x = Fp.mul(X, iz);\n const y = Fp.mul(Y, iz);\n const zz = Fp.mul(Z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x, y };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is invalid representation of ZERO.\n if (extraOpts.allowInfinityPoint && !Fp.is0(p.Y))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not field elements');\n if (!isValidXY(x, y))\n throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n function finishEndo(endoBeta, k1p, k2p, k1neg, k2neg) {\n k2p = new Point(Fp.mul(k2p.X, endoBeta), k2p.Y, k2p.Z);\n k1p = negateCt(k1neg, k1p);\n k2p = negateCt(k2neg, k2p);\n return k1p.add(k2p);\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates:(X, Y, Z) ∋ (x=X/Z, y=Y/Z).\n * Default Point works in 2d / affine coordinates: (x, y).\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n constructor(X, Y, Z) {\n this.X = acoord('x', X);\n this.Y = acoord('y', Y, true);\n this.Z = acoord('z', Z);\n Object.freeze(this);\n }\n static CURVE() {\n return CURVE;\n }\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n // (0, 0) would've produced (0, 0, 1) - instead, we need (0, 1, 0)\n if (Fp.is0(x) && Fp.is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n static fromBytes(bytes) {\n const P = Point.fromAffine(decodePoint(abytes(bytes, undefined, 'point')));\n P.assertValidity();\n return P;\n }\n static fromHex(hex) {\n return Point.fromBytes(ensureBytes('pointHex', hex));\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n *\n * @param windowSize\n * @param isLazy true will defer table computation until the first multiplication\n * @returns\n */\n precompute(windowSize = 8, isLazy = true) {\n wnaf.createCache(this, windowSize);\n if (!isLazy)\n this.multiply(_3n); // random number\n return this;\n }\n // TODO: return `this`\n /** A point on curve is valid if it conforms to equation. */\n assertValidity() {\n assertValidMemo(this);\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't support isOdd\");\n return !Fp.isOdd(y);\n }\n /** Compare one point to another. */\n equals(other) {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /** Flips point to one corresponding to (x, -y) in Affine coordinates. */\n negate() {\n return new Point(this.X, Fp.neg(this.Y), this.Z);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n const { endo } = extraOpts;\n if (!Fn.isValidNot0(scalar))\n throw new Error('invalid scalar: out of range'); // 0 is invalid\n let point, fake; // Fake point is used to const-time mult\n const mul = (n) => wnaf.cached(this, n, (p) => normalizeZ(Point, p));\n /** See docs for {@link EndomorphismOpts} */\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(scalar);\n const { p: k1p, f: k1f } = mul(k1);\n const { p: k2p, f: k2f } = mul(k2);\n fake = k1f.add(k2f);\n point = finishEndo(endo.beta, k1p, k2p, k1neg, k2neg);\n }\n else {\n const { p, f } = mul(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return normalizeZ(Point, [point, fake])[0];\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed secret key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc) {\n const { endo } = extraOpts;\n const p = this;\n if (!Fn.isValid(sc))\n throw new Error('invalid scalar: out of range'); // 0 is valid\n if (sc === _0n || p.is0())\n return Point.ZERO;\n if (sc === _1n)\n return p; // fast-path\n if (wnaf.hasCache(this))\n return this.multiply(sc);\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(sc);\n const { p1, p2 } = mulEndoUnsafe(Point, p, k1, k2); // 30% faster vs wnaf.unsafe\n return finishEndo(endo.beta, p1, p2, k1neg, k2neg);\n }\n else {\n return wnaf.unsafe(p, sc);\n }\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const sum = this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b));\n return sum.is0() ? undefined : sum;\n }\n /**\n * Converts Projective point to affine (x, y) coordinates.\n * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch\n */\n toAffine(invertedZ) {\n return toAffineMemo(this, invertedZ);\n }\n /**\n * Checks whether Point is free of torsion elements (is in prime subgroup).\n * Always torsion-free for cofactor=1 curves.\n */\n isTorsionFree() {\n const { isTorsionFree } = extraOpts;\n if (cofactor === _1n)\n return true;\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n return wnaf.unsafe(this, CURVE_ORDER).is0();\n }\n clearCofactor() {\n const { clearCofactor } = extraOpts;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(cofactor);\n }\n isSmallOrder() {\n // can we use this.clearCofactor()?\n return this.multiplyUnsafe(cofactor).is0();\n }\n toBytes(isCompressed = true) {\n abool(isCompressed, 'isCompressed');\n this.assertValidity();\n return encodePoint(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n return bytesToHex(this.toBytes(isCompressed));\n }\n toString() {\n return `<Point ${this.is0() ? 'ZERO' : this.toHex()}>`;\n }\n // TODO: remove\n get px() {\n return this.X;\n }\n get py() {\n return this.X;\n }\n get pz() {\n return this.Z;\n }\n toRawBytes(isCompressed = true) {\n return this.toBytes(isCompressed);\n }\n _setWindowSize(windowSize) {\n this.precompute(windowSize);\n }\n static normalizeZ(points) {\n return normalizeZ(Point, points);\n }\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(_normFnElement(Fn, privateKey));\n }\n }\n // base / generator point\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n // zero / infinity / identity point\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0\n // math field\n Point.Fp = Fp;\n // scalar field\n Point.Fn = Fn;\n const bits = Fn.BITS;\n const wnaf = new wNAF(Point, extraOpts.endo ? Math.ceil(bits / 2) : bits);\n Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n return Point;\n}\n// Points start with byte 0x02 when y is even; otherwise 0x03\nfunction pprefix(hasEvenY) {\n return Uint8Array.of(hasEvenY ? 0x02 : 0x03);\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n validateField(Fp);\n const { A, B, Z } = opts;\n if (!Fp.isValid(A) || !Fp.isValid(B) || !Fp.isValid(Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, Z);\n if (!Fp.isOdd)\n throw new Error('Field does not have .isOdd()');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n const tv4_inv = FpInvertBatch(Fp, [tv4], true)[0];\n x = Fp.mul(x, tv4_inv); // 25. x = x / tv4\n return { x, y };\n };\n}\nfunction getWLengths(Fp, Fn) {\n return {\n secretKey: Fn.BYTES,\n publicKey: 1 + Fp.BYTES,\n publicKeyUncompressed: 1 + 2 * Fp.BYTES,\n publicKeyHasPrefix: true,\n signature: 2 * Fn.BYTES,\n };\n}\n/**\n * Sometimes users only need getPublicKey, getSharedSecret, and secret key handling.\n * This helper ensures no signature functionality is present. Less code, smaller bundle size.\n */\nexport function ecdh(Point, ecdhOpts = {}) {\n const { Fn } = Point;\n const randomBytes_ = ecdhOpts.randomBytes || randomBytesWeb;\n const lengths = Object.assign(getWLengths(Point.Fp, Fn), { seed: getMinHashLength(Fn.ORDER) });\n function isValidSecretKey(secretKey) {\n try {\n return !!_normFnElement(Fn, secretKey);\n }\n catch (error) {\n return false;\n }\n }\n function isValidPublicKey(publicKey, isCompressed) {\n const { publicKey: comp, publicKeyUncompressed } = lengths;\n try {\n const l = publicKey.length;\n if (isCompressed === true && l !== comp)\n return false;\n if (isCompressed === false && l !== publicKeyUncompressed)\n return false;\n return !!Point.fromBytes(publicKey);\n }\n catch (error) {\n return false;\n }\n }\n /**\n * Produces cryptographically secure secret key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n function randomSecretKey(seed = randomBytes_(lengths.seed)) {\n return mapHashToField(abytes(seed, lengths.seed, 'seed'), Fn.ORDER);\n }\n /**\n * Computes public key for a secret key. Checks for validity of the secret key.\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(secretKey, isCompressed = true) {\n return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed);\n }\n function keygen(seed) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: getPublicKey(secretKey) };\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n if (typeof item === 'bigint')\n return false;\n if (item instanceof Point)\n return true;\n const { secretKey, publicKey, publicKeyUncompressed } = lengths;\n if (Fn.allowedLengths || secretKey === publicKey)\n return undefined;\n const l = ensureBytes('key', item).length;\n return l === publicKey || l === publicKeyUncompressed;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from secret key A and public key B.\n * Checks: 1) secret key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(secretKeyA, publicKeyB, isCompressed = true) {\n if (isProbPub(secretKeyA) === true)\n throw new Error('first arg must be private key');\n if (isProbPub(publicKeyB) === false)\n throw new Error('second arg must be public key');\n const s = _normFnElement(Fn, secretKeyA);\n const b = Point.fromHex(publicKeyB); // checks for being on-curve\n return b.multiply(s).toBytes(isCompressed);\n }\n const utils = {\n isValidSecretKey,\n isValidPublicKey,\n randomSecretKey,\n // TODO: remove\n isValidPrivateKey: isValidSecretKey,\n randomPrivateKey: randomSecretKey,\n normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),\n precompute(windowSize = 8, point = Point.BASE) {\n return point.precompute(windowSize, false);\n },\n };\n return Object.freeze({ getPublicKey, getSharedSecret, keygen, Point, utils, lengths });\n}\n/**\n * Creates ECDSA signing interface for given elliptic curve `Point` and `hash` function.\n * We need `hash` for 2 features:\n * 1. Message prehash-ing. NOT used if `sign` / `verify` are called with `prehash: false`\n * 2. k generation in `sign`, using HMAC-drbg(hash)\n *\n * ECDSAOpts are only rarely needed.\n *\n * @example\n * ```js\n * const p256_Point = weierstrass(...);\n * const p256_sha256 = ecdsa(p256_Point, sha256);\n * const p256_sha224 = ecdsa(p256_Point, sha224);\n * const p256_sha224_r = ecdsa(p256_Point, sha224, { randomBytes: (length) => { ... } });\n * ```\n */\nexport function ecdsa(Point, hash, ecdsaOpts = {}) {\n ahash(hash);\n _validateObject(ecdsaOpts, {}, {\n hmac: 'function',\n lowS: 'boolean',\n randomBytes: 'function',\n bits2int: 'function',\n bits2int_modN: 'function',\n });\n const randomBytes = ecdsaOpts.randomBytes || randomBytesWeb;\n const hmac = ecdsaOpts.hmac ||\n ((key, ...msgs) => nobleHmac(hash, key, concatBytes(...msgs)));\n const { Fp, Fn } = Point;\n const { ORDER: CURVE_ORDER, BITS: fnBits } = Fn;\n const { keygen, getPublicKey, getSharedSecret, utils, lengths } = ecdh(Point, ecdsaOpts);\n const defaultSigOpts = {\n prehash: false,\n lowS: typeof ecdsaOpts.lowS === 'boolean' ? ecdsaOpts.lowS : false,\n format: undefined, //'compact' as ECDSASigFormat,\n extraEntropy: false,\n };\n const defaultSigOpts_format = 'compact';\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function validateRS(title, num) {\n if (!Fn.isValidNot0(num))\n throw new Error(`invalid signature ${title}: out of range 1..Point.Fn.ORDER`);\n return num;\n }\n function validateSigLength(bytes, format) {\n validateSigFormat(format);\n const size = lengths.signature;\n const sizer = format === 'compact' ? size : format === 'recovered' ? size + 1 : undefined;\n return abytes(bytes, sizer, `${format} signature`);\n }\n /**\n * ECDSA signature with its (r, s) properties. Supports compact, recovered & DER representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = validateRS('r', r); // r in [1..N-1];\n this.s = validateRS('s', s); // s in [1..N-1];\n if (recovery != null)\n this.recovery = recovery;\n Object.freeze(this);\n }\n static fromBytes(bytes, format = defaultSigOpts_format) {\n validateSigLength(bytes, format);\n let recid;\n if (format === 'der') {\n const { r, s } = DER.toSig(abytes(bytes));\n return new Signature(r, s);\n }\n if (format === 'recovered') {\n recid = bytes[0];\n format = 'compact';\n bytes = bytes.subarray(1);\n }\n const L = Fn.BYTES;\n const r = bytes.subarray(0, L);\n const s = bytes.subarray(L, L * 2);\n return new Signature(Fn.fromBytes(r), Fn.fromBytes(s), recid);\n }\n static fromHex(hex, format) {\n return this.fromBytes(hexToBytes(hex), format);\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(messageHash) {\n const FIELD_ORDER = Fp.ORDER;\n const { r, s, recovery: rec } = this;\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n // ECDSA recovery is hard for cofactor > 1 curves.\n // In sign, `r = q.x mod n`, and here we recover q.x from r.\n // While recovering q.x >= n, we need to add r+n for cofactor=1 curves.\n // However, for cofactor>1, r+n may not get q.x:\n // r+n*i would need to be done instead where i is unknown.\n // To easily get i, we either need to:\n // a. increase amount of valid recid values (4, 5...); OR\n // b. prohibit non-prime-order signatures (recid > 1).\n const hasCofactor = CURVE_ORDER * _2n < FIELD_ORDER;\n if (hasCofactor && rec > 1)\n throw new Error('recovery id is ambiguous for h>1 curve');\n const radj = rec === 2 || rec === 3 ? r + CURVE_ORDER : r;\n if (!Fp.isValid(radj))\n throw new Error('recovery id 2 or 3 invalid');\n const x = Fp.toBytes(radj);\n const R = Point.fromBytes(concatBytes(pprefix((rec & 1) === 0), x));\n const ir = Fn.inv(radj); // r^-1\n const h = bits2int_modN(ensureBytes('msgHash', messageHash)); // Truncate hash\n const u1 = Fn.create(-h * ir); // -hr^-1\n const u2 = Fn.create(s * ir); // sr^-1\n // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1). unsafe is fine: there is no private data.\n const Q = Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2));\n if (Q.is0())\n throw new Error('point at infinify');\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n toBytes(format = defaultSigOpts_format) {\n validateSigFormat(format);\n if (format === 'der')\n return hexToBytes(DER.hexFromSig(this));\n const r = Fn.toBytes(this.r);\n const s = Fn.toBytes(this.s);\n if (format === 'recovered') {\n if (this.recovery == null)\n throw new Error('recovery bit must be present');\n return concatBytes(Uint8Array.of(this.recovery), r, s);\n }\n return concatBytes(r, s);\n }\n toHex(format) {\n return bytesToHex(this.toBytes(format));\n }\n // TODO: remove\n assertValidity() { }\n static fromCompact(hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'compact');\n }\n static fromDER(hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'der');\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, Fn.neg(this.s), this.recovery) : this;\n }\n toDERRawBytes() {\n return this.toBytes('der');\n }\n toDERHex() {\n return bytesToHex(this.toBytes('der'));\n }\n toCompactRawBytes() {\n return this.toBytes('compact');\n }\n toCompactHex() {\n return bytesToHex(this.toBytes('compact'));\n }\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = ecdsaOpts.bits2int ||\n function bits2int_def(bytes) {\n // Our custom check \"just in case\", for protection against DoS\n if (bytes.length > 8192)\n throw new Error('input is too large');\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - fnBits; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = ecdsaOpts.bits2int_modN ||\n function bits2int_modN_def(bytes) {\n return Fn.create(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // Pads output with zero as per spec\n const ORDER_MASK = bitMask(fnBits);\n /** Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`. */\n function int2octets(num) {\n // IMPORTANT: the check ensures working for case `Fn.BYTES != Fn.BITS * 8`\n aInRange('num < 2^' + fnBits, num, _0n, ORDER_MASK);\n return Fn.toBytes(num);\n }\n function validateMsgAndHash(message, prehash) {\n abytes(message, undefined, 'message');\n return prehash ? abytes(hash(message), undefined, 'prehashed message') : message;\n }\n /**\n * Steps A, D of RFC6979 3.2.\n * Creates RFC6979 seed; converts msg/privKey to numbers.\n * Used only in sign, not in verify.\n *\n * Warning: we cannot assume here that message has same amount of bytes as curve order,\n * this will be invalid at least for P521. Also it can be bigger for P224 + SHA256.\n */\n function prepSig(message, privateKey, opts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { lowS, prehash, extraEntropy } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash); // RFC6979 3.2 A: h1 = H(m)\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with fnBits % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(message);\n const d = _normFnElement(Fn, privateKey); // validate secret key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (extraEntropy != null && extraEntropy !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n // gen random bytes OR pass as-is\n const e = extraEntropy === true ? randomBytes(lengths.secretKey) : extraEntropy;\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n // To transform k => Signature:\n // q = k⋅G\n // r = q.x mod n\n // s = k^-1(m + rd) mod n\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n // Important: all mod() calls here must be done over N\n const k = bits2int(kBytes); // mod n, not mod p\n if (!Fn.isValidNot0(k))\n return; // Valid scalars (including k) must be in 1..N-1\n const ik = Fn.inv(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = k⋅G\n const r = Fn.create(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n const s = Fn.create(ik * Fn.create(m + r * d)); // Not using blinding here, see comment above\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = Fn.neg(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n /**\n * Signs message hash with a secret key.\n *\n * ```\n * sign(m, d) where\n * k = rfc6979_hmac_drbg(m, d)\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr) / k mod n\n * ```\n */\n function sign(message, secretKey, opts = {}) {\n message = ensureBytes('message', message);\n const { seed, k2sig } = prepSig(message, secretKey, opts); // Steps A, D of RFC6979 3.2.\n const drbg = createHmacDrbg(hash.outputLen, Fn.BYTES, hmac);\n const sig = drbg(seed, k2sig); // Steps B, C, D, E, F, G\n return sig;\n }\n function tryParsingSig(sg) {\n // Try to deduce format\n let sig = undefined;\n const isHex = typeof sg === 'string' || isBytes(sg);\n const isObj = !isHex &&\n sg !== null &&\n typeof sg === 'object' &&\n typeof sg.r === 'bigint' &&\n typeof sg.s === 'bigint';\n if (!isHex && !isObj)\n throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n if (isObj) {\n sig = new Signature(sg.r, sg.s);\n }\n else if (isHex) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'der');\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n }\n if (!sig) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'compact');\n }\n catch (error) {\n return false;\n }\n }\n }\n if (!sig)\n return false;\n return sig;\n }\n /**\n * Verifies a signature against message and public key.\n * Rejects lowS signatures by default: see {@link ECDSAVerifyOpts}.\n * Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * u1 = hs^-1 mod n\n * u2 = rs^-1 mod n\n * R = u1⋅G + u2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, message, publicKey, opts = {}) {\n const { lowS, prehash, format } = validateSigOpts(opts, defaultSigOpts);\n publicKey = ensureBytes('publicKey', publicKey);\n message = validateMsgAndHash(ensureBytes('message', message), prehash);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n const sig = format === undefined\n ? tryParsingSig(signature)\n : Signature.fromBytes(ensureBytes('sig', signature), format);\n if (sig === false)\n return false;\n try {\n const P = Point.fromBytes(publicKey);\n if (lowS && sig.hasHighS())\n return false;\n const { r, s } = sig;\n const h = bits2int_modN(message); // mod n, not mod p\n const is = Fn.inv(s); // s^-1 mod n\n const u1 = Fn.create(h * is); // u1 = hs^-1 mod n\n const u2 = Fn.create(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyUnsafe(u1).add(P.multiplyUnsafe(u2)); // u1⋅G + u2⋅P\n if (R.is0())\n return false;\n const v = Fn.create(R.x); // v = r.x mod n\n return v === r;\n }\n catch (e) {\n return false;\n }\n }\n function recoverPublicKey(signature, message, opts = {}) {\n const { prehash } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash);\n return Signature.fromBytes(signature, 'recovered').recoverPublicKey(message).toBytes();\n }\n return Object.freeze({\n keygen,\n getPublicKey,\n getSharedSecret,\n utils,\n lengths,\n Point,\n sign,\n verify,\n recoverPublicKey,\n Signature,\n hash,\n });\n}\n/** @deprecated use `weierstrass` in newer releases */\nexport function weierstrassPoints(c) {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n return _weierstrass_new_output_to_legacy(c, Point);\n}\nfunction _weierstrass_legacy_opts_to_new(c) {\n const CURVE = {\n a: c.a,\n b: c.b,\n p: c.Fp.ORDER,\n n: c.n,\n h: c.h,\n Gx: c.Gx,\n Gy: c.Gy,\n };\n const Fp = c.Fp;\n let allowedLengths = c.allowedPrivateKeyLengths\n ? Array.from(new Set(c.allowedPrivateKeyLengths.map((l) => Math.ceil(l / 2))))\n : undefined;\n const Fn = Field(CURVE.n, {\n BITS: c.nBitLength,\n allowedLengths: allowedLengths,\n modFromBytes: c.wrapPrivateKey,\n });\n const curveOpts = {\n Fp,\n Fn,\n allowInfinityPoint: c.allowInfinityPoint,\n endo: c.endo,\n isTorsionFree: c.isTorsionFree,\n clearCofactor: c.clearCofactor,\n fromBytes: c.fromBytes,\n toBytes: c.toBytes,\n };\n return { CURVE, curveOpts };\n}\nfunction _ecdsa_legacy_opts_to_new(c) {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const ecdsaOpts = {\n hmac: c.hmac,\n randomBytes: c.randomBytes,\n lowS: c.lowS,\n bits2int: c.bits2int,\n bits2int_modN: c.bits2int_modN,\n };\n return { CURVE, curveOpts, hash: c.hash, ecdsaOpts };\n}\nexport function _legacyHelperEquat(Fp, a, b) {\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula. Takes x, returns y².\n * @returns y²\n */\n function weierstrassEquation(x) {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x² * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x³ + a * x + b\n }\n return weierstrassEquation;\n}\nfunction _weierstrass_new_output_to_legacy(c, Point) {\n const { Fp, Fn } = Point;\n function isWithinCurveOrder(num) {\n return inRange(num, _1n, Fn.ORDER);\n }\n const weierstrassEquation = _legacyHelperEquat(Fp, c.a, c.b);\n return Object.assign({}, {\n CURVE: c,\n Point: Point,\n ProjectivePoint: Point,\n normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),\n weierstrassEquation,\n isWithinCurveOrder,\n });\n}\nfunction _ecdsa_new_output_to_legacy(c, _ecdsa) {\n const Point = _ecdsa.Point;\n return Object.assign({}, _ecdsa, {\n ProjectivePoint: Point,\n CURVE: Object.assign({}, c, nLength(Point.Fn.ORDER, Point.Fn.BITS)),\n });\n}\n// _ecdsa_legacy\nexport function weierstrass(c) {\n const { CURVE, curveOpts, hash, ecdsaOpts } = _ecdsa_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n const signs = ecdsa(Point, hash, ecdsaOpts);\n return _ecdsa_new_output_to_legacy(c, signs);\n}\n//# sourceMappingURL=weierstrass.js.map","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { weierstrass } from \"./abstract/weierstrass.js\";\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash) {\n return { hash };\n}\n/** @deprecated use new `weierstrass()` and `ecdsa()` methods */\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, hash: hash });\n return { ...create(defHash), create };\n}\n//# sourceMappingURL=_shortw_utils.js.map","import { _validateObject, abytes, bytesToNumberBE, concatBytes, isBytes, isHash, utf8ToBytes, } from \"../utils.js\";\nimport { FpInvertBatch, mod } from \"./modular.js\";\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value, length) {\n anum(value);\n anum(length);\n if (value < 0 || value >= 1 << (8 * length))\n throw new Error('invalid I2OSP input: ' + value);\n const res = Array.from({ length }).fill(0);\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\nfunction strxor(a, b) {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\nfunction anum(item) {\n if (!Number.isSafeInteger(item))\n throw new Error('number expected');\n}\nfunction normDST(DST) {\n if (!isBytes(DST) && typeof DST !== 'string')\n throw new Error('DST must be Uint8Array or string');\n return typeof DST === 'string' ? utf8ToBytes(DST) : DST;\n}\n/**\n * Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.\n * [RFC 9380 5.3.1](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1).\n */\nexport function expand_message_xmd(msg, DST, lenInBytes, H) {\n abytes(msg);\n anum(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255)\n DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (lenInBytes > 65535 || ell > 255)\n throw new Error('expand_message_xmd: invalid lenInBytes');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n/**\n * Produces a uniformly random byte string using an extendable-output function (XOF) H.\n * 1. The collision resistance of H MUST be at least k bits.\n * 2. H MUST be an XOF that has been proved indifferentiable from\n * a random oracle under a reasonable cryptographic assumption.\n * [RFC 9380 5.3.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2).\n */\nexport function expand_message_xof(msg, DST, lenInBytes, k, H) {\n abytes(msg);\n anum(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest());\n}\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * [RFC 9380 5.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.2).\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg, count, options) {\n _validateObject(options, {\n p: 'bigint',\n m: 'number',\n k: 'number',\n hash: 'function',\n });\n const { p, k, m, hash, expand, DST } = options;\n if (!isHash(options.hash))\n throw new Error('expected valid hash');\n abytes(msg);\n anum(count);\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n }\n else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n }\n else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n }\n else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\nexport function isogenyMap(field, map) {\n // Make same order as in spec\n const coeff = map.map((i) => Array.from(i).reverse());\n return (x, y) => {\n const [xn, xd, yn, yd] = coeff.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i)));\n // 6.6.3\n // Exceptional cases of iso_map are inputs that cause the denominator of\n // either rational function to evaluate to zero; such cases MUST return\n // the identity point on E.\n const [xd_inv, yd_inv] = FpInvertBatch(field, [xd, yd], true);\n x = field.mul(xn, xd_inv); // xNum / xDen\n y = field.mul(y, field.mul(yn, yd_inv)); // y * (yNum / yDev)\n return { x, y };\n };\n}\nexport const _DST_scalar = utf8ToBytes('HashToScalar-');\n/** Creates hash-to-curve methods from EC Point and mapToCurve function. See {@link H2CHasher}. */\nexport function createHasher(Point, mapToCurve, defaults) {\n if (typeof mapToCurve !== 'function')\n throw new Error('mapToCurve() must be defined');\n function map(num) {\n return Point.fromAffine(mapToCurve(num));\n }\n function clear(initial) {\n const P = initial.clearCofactor();\n if (P.equals(Point.ZERO))\n return Point.ZERO; // zero will throw in assert\n P.assertValidity();\n return P;\n }\n return {\n defaults,\n hashToCurve(msg, options) {\n const opts = Object.assign({}, defaults, options);\n const u = hash_to_field(msg, 2, opts);\n const u0 = map(u[0]);\n const u1 = map(u[1]);\n return clear(u0.add(u1));\n },\n encodeToCurve(msg, options) {\n const optsDst = defaults.encodeDST ? { DST: defaults.encodeDST } : {};\n const opts = Object.assign({}, defaults, optsDst, options);\n const u = hash_to_field(msg, 1, opts);\n const u0 = map(u[0]);\n return clear(u0);\n },\n /** See {@link H2CHasher} */\n mapToCurve(scalars) {\n if (!Array.isArray(scalars))\n throw new Error('expected array of bigints');\n for (const i of scalars)\n if (typeof i !== 'bigint')\n throw new Error('expected array of bigints');\n return clear(map(scalars));\n },\n // hash_to_scalar can produce 0: https://www.rfc-editor.org/errata/eid8393\n // RFC 9380, draft-irtf-cfrg-bbs-signatures-08\n hashToScalar(msg, options) {\n // @ts-ignore\n const N = Point.Fn.ORDER;\n const opts = Object.assign({}, defaults, { p: N, m: 1, DST: _DST_scalar }, options);\n return hash_to_field(msg, 1, opts)[0][0];\n },\n };\n}\n//# sourceMappingURL=hash-to-curve.js.map","/**\n * SECG secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Belongs to Koblitz curves: it has efficiently-computable GLV endomorphism ψ,\n * check out {@link EndomorphismOpts}. Seems to be rigid (not backdoored).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { randomBytes } from '@noble/hashes/utils.js';\nimport { createCurve } from \"./_shortw_utils.js\";\nimport { createHasher, isogenyMap, } from \"./abstract/hash-to-curve.js\";\nimport { Field, mapHashToField, mod, pow2 } from \"./abstract/modular.js\";\nimport { _normFnElement, mapToCurveSimpleSWU, } from \"./abstract/weierstrass.js\";\nimport { bytesToNumberBE, concatBytes, ensureBytes, inRange, numberToBytesBE, utf8ToBytes, } from \"./utils.js\";\n// Seems like generator was produced from some seed:\n// `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`\n// // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n\nconst secp256k1_CURVE = {\n p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: BigInt(1),\n a: BigInt(0),\n b: BigInt(7),\n Gx: BigInt('0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'),\n Gy: BigInt('0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8'),\n};\nconst secp256k1_ENDO = {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n basises: [\n [BigInt('0x3086d221a7d46bcde86c90e49284eb15'), -BigInt('0xe4437ed6010e88286f547fa90abfe4c3')],\n [BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'), BigInt('0x3086d221a7d46bcde86c90e49284eb15')],\n ],\n};\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1_CURVE.p;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fpk1.eql(Fpk1.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fpk1 = Field(secp256k1_CURVE.p, { sqrt: sqrtMod });\n/**\n * secp256k1 curve, ECDSA and ECDH methods.\n *\n * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`\n *\n * @example\n * ```js\n * import { secp256k1 } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = secp256k1.keygen();\n * const msg = new TextEncoder().encode('hello');\n * const sig = secp256k1.sign(msg, secretKey);\n * const isValid = secp256k1.verify(sig, msg, publicKey) === true;\n * ```\n */\nexport const secp256k1 = createCurve({ ...secp256k1_CURVE, Fp: Fpk1, lowS: true, endo: secp256k1_ENDO }, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(utf8ToBytes(tag));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toBytes(true).slice(1);\nconst Pointk1 = /* @__PURE__ */ (() => secp256k1.Point)();\nconst hasEven = (y) => y % _2n === _0n;\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n const { Fn, BASE } = Pointk1;\n const d_ = _normFnElement(Fn, priv);\n const p = BASE.multiply(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = hasEven(p.y) ? d_ : Fn.neg(d_);\n return { scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n const Fp = Fpk1;\n if (!Fp.isValidNot0(x))\n throw new Error('invalid x: Fail if x ≥ p');\n const xx = Fp.create(x * x);\n const c = Fp.create(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = Fp.sqrt(c); // Let y = c^(p+1)/4 mod p. Same as sqrt().\n // Return the unique point P such that x(P) = x and\n // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n if (!hasEven(y))\n y = Fp.neg(y);\n const p = Pointk1.fromAffine({ x, y });\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return Pointk1.Fn.create(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(secretKey) {\n return schnorrGetExtPubKey(secretKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, secretKey, auxRand = randomBytes(32)) {\n const { Fn } = Pointk1;\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = Fn.toBytes(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n // Let k' = int(rand) mod n. Fail if k' = 0. Let R = k'⋅G\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(rand);\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(Fn.toBytes(Fn.create(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const { Fn, BASE } = Pointk1;\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1_CURVE.p))\n return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1_CURVE.n))\n return false;\n // int(challenge(bytes(r)||bytes(P)||m))%n\n const e = challenge(Fn.toBytes(r), pointToBytes(P), m);\n // R = s⋅G - e⋅P, where -eP == (n-e)P\n const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn.neg(e)));\n const { x, y } = R.toAffine();\n // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n if (R.is0() || !hasEven(y) || x !== r)\n return false;\n return true;\n }\n catch (error) {\n return false;\n }\n}\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * ```js\n * import { schnorr } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = schnorr.keygen();\n * // const publicKey = schnorr.getPublicKey(secretKey);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, secretKey);\n * const isValid = schnorr.verify(sig, msg, publicKey);\n * ```\n */\nexport const schnorr = /* @__PURE__ */ (() => {\n const size = 32;\n const seedLength = 48;\n const randomSecretKey = (seed = randomBytes(seedLength)) => {\n return mapHashToField(seed, secp256k1_CURVE.n);\n };\n // TODO: remove\n secp256k1.utils.randomSecretKey;\n function keygen(seed) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: schnorrGetPublicKey(secretKey) };\n }\n return {\n keygen,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n Point: Pointk1,\n utils: {\n randomSecretKey: randomSecretKey,\n randomPrivateKey: randomSecretKey,\n taggedHash,\n // TODO: remove\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n mod,\n },\n lengths: {\n secretKey: size,\n publicKey: size,\n publicKeyHasPrefix: false,\n signature: size * 2,\n seed: seedLength,\n },\n };\n})();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fpk1, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fpk1, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fpk1.create(BigInt('-11')),\n}))();\n/** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */\nexport const secp256k1_hasher = /* @__PURE__ */ (() => createHasher(secp256k1.Point, (scalars) => {\n const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fpk1.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const hashToCurve = /* @__PURE__ */ (() => secp256k1_hasher.hashToCurve)();\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const encodeToCurve = /* @__PURE__ */ (() => secp256k1_hasher.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","/**\n\nSHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions.\nDon't use them in a new protocol. What \"weak\" means:\n\n- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.\n- No practical pre-image attacks (only theoretical, 2^123.4)\n- HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151\n * @module\n */\nimport { Chi, HashMD, Maj } from \"./_md.js\";\nimport { clean, createHasher, rotl } from \"./utils.js\";\n/** Initial SHA1 state */\nconst SHA1_IV = /* @__PURE__ */ Uint32Array.from([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Reusable temporary buffer\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\n/** SHA1 legacy hash class. */\nexport class SHA1 extends HashMD {\n constructor() {\n super(64, 20, 8, false);\n this.A = SHA1_IV[0] | 0;\n this.B = SHA1_IV[1] | 0;\n this.C = SHA1_IV[2] | 0;\n this.D = SHA1_IV[3] | 0;\n this.E = SHA1_IV[4] | 0;\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n clean(SHA1_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\nexport const sha1 = /* @__PURE__ */ createHasher(() => new SHA1());\n/** Per-round constants */\nconst p32 = /* @__PURE__ */ Math.pow(2, 32);\nconst K = /* @__PURE__ */ Array.from({ length: 64 }, (_, i) => Math.floor(p32 * Math.abs(Math.sin(i + 1))));\n/** md5 initial state: same as sha1, but 4 u32 instead of 5. */\nconst MD5_IV = /* @__PURE__ */ SHA1_IV.slice(0, 4);\n// Reusable temporary buffer\nconst MD5_W = /* @__PURE__ */ new Uint32Array(16);\n/** MD5 legacy hash class. */\nexport class MD5 extends HashMD {\n constructor() {\n super(64, 16, 8, true);\n this.A = MD5_IV[0] | 0;\n this.B = MD5_IV[1] | 0;\n this.C = MD5_IV[2] | 0;\n this.D = MD5_IV[3] | 0;\n }\n get() {\n const { A, B, C, D } = this;\n return [A, B, C, D];\n }\n set(A, B, C, D) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n MD5_W[i] = view.getUint32(offset, true);\n // Compression function main loop, 64 rounds\n let { A, B, C, D } = this;\n for (let i = 0; i < 64; i++) {\n let F, g, s;\n if (i < 16) {\n F = Chi(B, C, D);\n g = i;\n s = [7, 12, 17, 22];\n }\n else if (i < 32) {\n F = Chi(D, B, C);\n g = (5 * i + 1) % 16;\n s = [5, 9, 14, 20];\n }\n else if (i < 48) {\n F = B ^ C ^ D;\n g = (3 * i + 5) % 16;\n s = [4, 11, 16, 23];\n }\n else {\n F = C ^ (B | ~D);\n g = (7 * i) % 16;\n s = [6, 10, 15, 21];\n }\n F = F + A + K[i] + MD5_W[g];\n A = D;\n D = C;\n C = B;\n B = B + rotl(F, s[i % 4]);\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n this.set(A, B, C, D);\n }\n roundClean() {\n clean(MD5_W);\n }\n destroy() {\n this.set(0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/**\n * MD5 (RFC 1321) legacy hash function. It was cryptographically broken.\n * MD5 architecture is similar to SHA1, with some differences:\n * - Reduced output length: 16 bytes (128 bit) instead of 20\n * - 64 rounds, instead of 80\n * - Little-endian: could be faster, but will require more code\n * - Non-linear index selection: huge speed-up for unroll\n * - Per round constants: more memory accesses, additional speed-up for unroll\n */\nexport const md5 = /* @__PURE__ */ createHasher(() => new MD5());\n// RIPEMD-160\nconst Rho160 = /* @__PURE__ */ Uint8Array.from([\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n]);\nconst Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();\nconst Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();\nconst idxLR = /* @__PURE__ */ (() => {\n const L = [Id160];\n const R = [Pi160];\n const res = [L, R];\n for (let i = 0; i < 4; i++)\n for (let j of res)\n j.push(j[i].map((k) => Rho160[k]));\n return res;\n})();\nconst idxL = /* @__PURE__ */ (() => idxLR[0])();\nconst idxR = /* @__PURE__ */ (() => idxLR[1])();\n// const [idxL, idxR] = idxLR;\nconst shifts160 = /* @__PURE__ */ [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => Uint8Array.from(i));\nconst shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst Kl160 = /* @__PURE__ */ Uint32Array.from([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr160 = /* @__PURE__ */ Uint32Array.from([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// It's called f() in spec.\nfunction ripemd_f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n if (group === 1)\n return (x & y) | (~x & z);\n if (group === 2)\n return (x | ~y) ^ z;\n if (group === 3)\n return (x & z) | (y & ~z);\n return x ^ (y | ~z);\n}\n// Reusable temporary buffer\nconst BUF_160 = /* @__PURE__ */ new Uint32Array(16);\nexport class RIPEMD160 extends HashMD {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF_160[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl160[group], hbr = Kr160[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL160[group], sr = shiftsR160[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n clean(BUF_160);\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a legacy hash function from 1990s.\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n */\nexport const ripemd160 = /* @__PURE__ */ createHasher(() => new RIPEMD160());\n//# sourceMappingURL=legacy.js.map","/**\n * RIPEMD-160 legacy hash function.\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n * @module\n * @deprecated\n */\nimport { RIPEMD160 as RIPEMD160n, ripemd160 as ripemd160n } from \"./legacy.js\";\n/** @deprecated Use import from `noble/hashes/legacy` module */\nexport const RIPEMD160 = RIPEMD160n;\n/** @deprecated Use import from `noble/hashes/legacy` module */\nexport const ripemd160 = ripemd160n;\n//# sourceMappingURL=ripemd160.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n// no abytes: seems to have 10% slowdown. Why?!\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n * @deprecated\n */\nimport { SHA224 as SHA224n, sha224 as sha224n, SHA256 as SHA256n, sha256 as sha256n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA256 = SHA256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha256 = sha256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA224 = SHA224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha224 = sha224n;\n//# sourceMappingURL=sha256.js.map","import { sha256 } from \"@noble/hashes/sha256\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base58, createBase58check } from \"@scure/base\";\nconst base58Unchecked = base58;\nexport const base58UncheckedEncode = base58Unchecked.encode;\nexport const base58UncheckedDecode = base58Unchecked.decode;\nconst base58Check = createBase58check(sha256);\nexport const base58CheckEncode = base58Check.encode;\nexport const base58CheckDecode = base58Check.decode;\nexport const createBase58VersionedEncoder = (p2pkhVersion, p2shVersion) => (source) => {\n // P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG\n if (source[0] === 0x76) {\n if (source[1] !== 0xa9 ||\n source[source.length - 2] !== 0x88 ||\n source[source.length - 1] !== 0xac) {\n throw new Error(\"Unrecognised address format\");\n }\n return base58CheckEncode(concatBytes(p2pkhVersion, source.slice(3, 3 + source[2])));\n }\n // P2SH: OP_HASH160 <scriptHash> OP_EQUAL\n if (source[0] === 0xa9) {\n if (source[source.length - 1] !== 0x87) {\n throw new Error(\"Unrecognised address format\");\n }\n return base58CheckEncode(concatBytes(p2shVersion, source.slice(2, 2 + source[1])));\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const createBase58VersionedDecoder = (p2pkhVersions, p2shVersions) => (source) => {\n const addr = base58CheckDecode(source);\n // Checks if the first addr bytes are exactly equal to provided version field\n const checkVersion = (version) => {\n return version.every((value, index) => index < addr.length && value === addr[index]);\n };\n if (p2pkhVersions.some(checkVersion))\n return concatBytes(new Uint8Array([0x76, 0xa9, 0x14]), addr.slice(p2pkhVersions[0].length), new Uint8Array([0x88, 0xac]));\n if (p2shVersions.some(checkVersion))\n return concatBytes(new Uint8Array([0xa9, 0x14]), addr.slice(p2shVersions[0].length), new Uint8Array([0x87]));\n throw new Error(\"Unrecognised address format\");\n};\n//# sourceMappingURL=base58.js.map","import { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { utils } from \"@scure/base\";\nimport { base58UncheckedDecode, base58UncheckedEncode } from \"./base58.js\";\nconst eosChecksum = utils.checksum(4, ripemd160);\nexport const createEosEncoder = (prefix) => (source) => {\n const point = secp256k1.ProjectivePoint.fromHex(source);\n const checksummed = eosChecksum.encode(point.toRawBytes(true));\n const encoded = base58UncheckedEncode(checksummed);\n return `${prefix}${encoded}`;\n};\nexport const createEosDecoder = (prefix) => (source) => {\n if (!source.startsWith(prefix))\n throw new Error(\"Unrecognised address format\");\n const prefixStripped = source.slice(prefix.length);\n const decoded = base58UncheckedDecode(prefixStripped);\n const checksummed = eosChecksum.decode(decoded);\n return checksummed;\n};\n//# sourceMappingURL=eosio.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"abbc\";\nconst coinType = 367;\nconst prefix = \"ABBC\";\nexport const encodeAbbcAddress = createEosEncoder(prefix);\nexport const decodeAbbcAddress = createEosDecoder(prefix);\nexport const abbc = {\n name,\n coinType,\n encode: encodeAbbcAddress,\n decode: decodeAbbcAddress,\n};\n//# sourceMappingURL=abbc.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { bech32, bech32m } from \"@scure/base\";\nconst createInternalBech32Encoder = ({ bechLib, hrp, limit }) => (source) => {\n return bechLib.encode(hrp, bechLib.toWords(source), limit);\n};\nconst createInternalBech32Decoder = ({ bechLib, hrp, limit }) => (source) => {\n const { prefix, words } = bechLib.decode(source, limit);\n if (prefix !== hrp) {\n throw new Error(\"Unexpected human-readable part in bech32 encoded address\");\n }\n return new Uint8Array(bechLib.fromWords(words));\n};\nexport const createBech32Encoder = (hrp, limit) => createInternalBech32Encoder({ hrp, bechLib: bech32, limit });\nexport const createBech32Decoder = (hrp, limit) => createInternalBech32Decoder({ hrp, bechLib: bech32, limit });\nexport const createBech32mEncoder = (hrp, limit) => createInternalBech32Encoder({ hrp, bechLib: bech32m, limit });\nexport const createBech32mDecoder = (hrp, limit) => createInternalBech32Decoder({ hrp, bechLib: bech32m, limit });\nexport const createBech32SegwitEncoder = (hrp) => (source) => {\n let version = source[0];\n if (version >= 0x51 && version <= 0x60) {\n version -= 0x50;\n }\n else if (version !== 0x00) {\n throw new Error(\"Unrecognised address format\");\n }\n let words = [];\n if (version > 0 && version < 17) {\n words = [version].concat(bech32m.toWords(source.slice(2, source[1] + 2)));\n return bech32m.encode(hrp, words);\n }\n words = [version].concat(bech32.toWords(source.slice(2, source[1] + 2)));\n return bech32.encode(hrp, words);\n};\nexport const createBech32SegwitDecoder = (hrp) => (source) => {\n const decodedObj = bech32.decodeUnsafe(source) || bech32m.decodeUnsafe(source);\n if (!decodedObj)\n throw new Error(\"Unrecognised address format\");\n const { prefix, words } = decodedObj;\n if (prefix !== hrp)\n throw new Error(\"Unexpected human-readable part in bech32 encoded address\");\n const script = bech32.fromWords(words.slice(1));\n let version = words[0];\n if (version > 0) {\n version += 0x50;\n }\n return concatBytes(new Uint8Array([version, script.length]), new Uint8Array(script));\n};\n//# sourceMappingURL=bech32.js.map","// Ported from https://www.npmjs.com/package/cbor-redux as the release 0.4.0 was missing on npm, which has critical changes.\n/** @hidden */\nconst POW_2_24 = 5.960464477539063e-8;\n/** @hidden */\nconst POW_2_32 = 4294967296;\n/** @hidden */\nconst POW_2_53 = 9007199254740992;\n/** @hidden */\nconst DECODE_CHUNK_SIZE = 8192;\n/** @hidden */\nfunction objectIs(x, y) {\n if (typeof Object.is === \"function\") {\n return Object.is(x, y);\n }\n // SameValue algorithm\n // Steps 1-5, 7-10\n if (x === y) {\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n }\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n}\n/** Convenience class for structuring a tagged value. */\nexport class TaggedValue {\n constructor(value, tag) {\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tag\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.value = value;\n this.tag = tag;\n }\n}\n/** Convenience class for structuring a simple value. */\nexport class SimpleValue {\n constructor(value) {\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.value = value;\n }\n}\nexport function cborDecode(data) {\n const dataView = new DataView(data);\n const ta = new Uint8Array(data);\n let offset = 0;\n let tagValueFunction = (value, tag) => {\n return new TaggedValue(value, tag);\n };\n let simpleValueFunction = (value) => {\n return new SimpleValue(value);\n };\n function commitRead(length, value) {\n offset += length;\n return value;\n }\n function readArrayBuffer(length) {\n return commitRead(length, new Uint8Array(data, offset, length));\n }\n function readFloat16() {\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = readUint16();\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n if (exponent === 0x7c00) {\n exponent = 0xff << 10;\n }\n else if (exponent !== 0) {\n exponent += (127 - 15) << 10;\n }\n else if (fraction !== 0) {\n return (sign ? -1 : 1) * fraction * POW_2_24;\n }\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n function readFloat32() {\n return commitRead(4, dataView.getFloat32(offset));\n }\n function readFloat64() {\n return commitRead(8, dataView.getFloat64(offset));\n }\n function readUint8() {\n return commitRead(1, ta[offset]);\n }\n function readUint16() {\n return commitRead(2, dataView.getUint16(offset));\n }\n function readUint32() {\n return commitRead(4, dataView.getUint32(offset));\n }\n function readUint64() {\n return readUint32() * POW_2_32 + readUint32();\n }\n function readBreak() {\n if (ta[offset] !== 0xff) {\n return false;\n }\n offset += 1;\n return true;\n }\n function readLength(additionalInformation) {\n if (additionalInformation < 24) {\n return additionalInformation;\n }\n else if (additionalInformation === 24) {\n return readUint8();\n }\n else if (additionalInformation === 25) {\n return readUint16();\n }\n else if (additionalInformation === 26) {\n return readUint32();\n }\n else if (additionalInformation === 27) {\n return readUint64();\n }\n else if (additionalInformation === 31) {\n return -1;\n }\n throw new Error(\"Invalid length encoding\");\n }\n function readIndefiniteStringLength(majorType) {\n const initialByte = readUint8();\n if (initialByte === 0xff) {\n return -1;\n }\n const length = readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error(\"Invalid indefinite length element\");\n }\n return length;\n }\n function appendUtf16Data(utf16data, length) {\n for (let i = 0; i < length; ++i) {\n let value = readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (readUint8() & 0x3f);\n length -= 1;\n }\n else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((readUint8() & 0x3f) << 6) |\n (readUint8() & 0x3f);\n length -= 2;\n }\n else {\n value =\n ((value & 0x0f) << 18) |\n ((readUint8() & 0x3f) << 12) |\n ((readUint8() & 0x3f) << 6) |\n (readUint8() & 0x3f);\n length -= 3;\n }\n }\n if (value < 0x10000) {\n utf16data.push(value);\n }\n else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n function decodeItem() {\n const initialByte = readUint8();\n const majorType = initialByte >> 5;\n const additionalInformation = initialByte & 0x1f;\n let i;\n let length;\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return readFloat16();\n case 26:\n return readFloat32();\n case 27:\n return readFloat64();\n }\n }\n length = readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error(\"Invalid length\");\n }\n switch (majorType) {\n case 0:\n return length;\n case 1:\n return -1 - length;\n case 2:\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n length = readIndefiniteStringLength(majorType);\n while (length >= 0) {\n fullArrayLength += length;\n elements.push(readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return readArrayBuffer(length);\n case 3:\n const utf16data = [];\n if (length < 0) {\n length = readIndefiniteStringLength(majorType);\n while (length >= 0) {\n appendUtf16Data(utf16data, length);\n }\n }\n else {\n appendUtf16Data(utf16data, length);\n }\n let str = \"\";\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n str += String.fromCharCode.apply(null, utf16data.slice(i, i + DECODE_CHUNK_SIZE));\n }\n return str;\n case 4:\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!readBreak()) {\n retArray.push(decodeItem());\n }\n }\n else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = decodeItem();\n }\n }\n return retArray;\n case 5:\n const retObject = {};\n for (i = 0; i < length || (length < 0 && !readBreak()); ++i) {\n const key = decodeItem();\n retObject[key] = decodeItem();\n }\n return retObject;\n case 6:\n return tagValueFunction(decodeItem(), length);\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return simpleValueFunction(length);\n }\n }\n }\n const ret = decodeItem();\n if (offset !== data.byteLength) {\n throw new Error(\"Remaining bytes\");\n }\n return ret;\n}\nexport function cborEncode(value) {\n let data = new ArrayBuffer(256);\n let dataView = new DataView(data);\n let byteView = new Uint8Array(data);\n let lastLength;\n let offset = 0;\n function prepareWrite(length) {\n let newByteLength = data.byteLength;\n const requiredLength = offset + length;\n while (newByteLength < requiredLength) {\n newByteLength <<= 1;\n }\n if (newByteLength !== data.byteLength) {\n const oldDataView = dataView;\n data = new ArrayBuffer(newByteLength);\n dataView = new DataView(data);\n byteView = new Uint8Array(data);\n const uint32count = (offset + 3) >> 2;\n for (let i = 0; i < uint32count; ++i) {\n dataView.setUint32(i << 2, oldDataView.getUint32(i << 2));\n }\n }\n lastLength = length;\n return dataView;\n }\n function commitWrite(..._args) {\n offset += lastLength;\n }\n function writeFloat64(val) {\n commitWrite(prepareWrite(8).setFloat64(offset, val));\n }\n function writeUint8(val) {\n commitWrite(prepareWrite(1).setUint8(offset, val));\n }\n function writeUint8Array(val) {\n prepareWrite(val.length);\n byteView.set(val, offset);\n commitWrite();\n }\n function writeUint16(val) {\n commitWrite(prepareWrite(2).setUint16(offset, val));\n }\n function writeUint32(val) {\n commitWrite(prepareWrite(4).setUint32(offset, val));\n }\n function writeUint64(val) {\n const low = val % POW_2_32;\n const high = (val - low) / POW_2_32;\n const view = prepareWrite(8);\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n commitWrite();\n }\n function writeVarUint(val, mod) {\n if (val <= 0xff) {\n if (val < 24) {\n writeUint8(val | mod);\n }\n else {\n writeUint8(0x18 | mod);\n writeUint8(val);\n }\n }\n else if (val <= 0xffff) {\n writeUint8(0x19 | mod);\n writeUint16(val);\n }\n else if (val <= 0xffffffff) {\n writeUint8(0x1a | mod);\n writeUint32(val);\n }\n else {\n writeUint8(0x1b | mod);\n writeUint64(val);\n }\n }\n function writeTypeAndLength(type, length) {\n if (length < 24) {\n writeUint8((type << 5) | length);\n }\n else if (length < 0x100) {\n writeUint8((type << 5) | 24);\n writeUint8(length);\n }\n else if (length < 0x10000) {\n writeUint8((type << 5) | 25);\n writeUint16(length);\n }\n else if (length < 0x100000000) {\n writeUint8((type << 5) | 26);\n writeUint32(length);\n }\n else {\n writeUint8((type << 5) | 27);\n writeUint64(length);\n }\n }\n function encodeItem(val) {\n let i;\n if (val === false) {\n return writeUint8(0xf4);\n }\n else if (val === true) {\n return writeUint8(0xf5);\n }\n else if (val === null) {\n return writeUint8(0xf6);\n }\n else if (val === undefined) {\n return writeUint8(0xf7);\n }\n else if (objectIs(val, -0)) {\n return writeUint8Array([0xf9, 0x80, 0x00]);\n }\n switch (typeof val) {\n case \"number\":\n if (Math.floor(val) === val) {\n if (0 <= val && val <= POW_2_53) {\n return writeTypeAndLength(0, val);\n }\n else if (-POW_2_53 <= val && val < 0) {\n return writeTypeAndLength(1, -(val + 1));\n }\n }\n writeUint8(0xfb);\n return writeFloat64(val);\n case \"string\":\n const utf8data = [];\n for (i = 0; i < val.length; i++) {\n let charCode = val.charCodeAt(i);\n if (charCode < 0x80) {\n utf8data.push(charCode);\n }\n else if (charCode < 0x800) {\n utf8data.push(0xc0 | (charCode >> 6));\n utf8data.push(0x80 | (charCode & 0x3f));\n }\n else {\n charCode = (charCode & 0x3ff) << 10;\n charCode |= val.charCodeAt(++i) & 0x3ff;\n charCode += 0x10000;\n utf8data.push(0xf0 | (charCode >> 18));\n utf8data.push(0x80 | ((charCode >> 12) & 0x3f));\n utf8data.push(0x80 | ((charCode >> 6) & 0x3f));\n utf8data.push(0x80 | (charCode & 0x3f));\n }\n }\n writeTypeAndLength(3, utf8data.length);\n return writeUint8Array(utf8data);\n default:\n let length;\n let converted;\n if (Array.isArray(val)) {\n length = val.length;\n writeTypeAndLength(4, length);\n for (i = 0; i < length; i++) {\n encodeItem(val[i]);\n }\n }\n else if (val instanceof Uint8Array) {\n writeTypeAndLength(2, val.length);\n writeUint8Array(val);\n }\n else if (ArrayBuffer.isView(val)) {\n converted = new Uint8Array(val.buffer);\n writeTypeAndLength(2, converted.length);\n writeUint8Array(converted);\n }\n else if (val instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer === \"function\" &&\n val instanceof SharedArrayBuffer)) {\n converted = new Uint8Array(val);\n writeTypeAndLength(2, converted.length);\n writeUint8Array(converted);\n }\n else if (val instanceof TaggedValue) {\n writeVarUint(val.tag, 0b11000000);\n encodeItem(val.value);\n }\n else {\n const keys = Object.keys(val);\n length = keys.length;\n writeTypeAndLength(5, length);\n for (i = 0; i < length; i++) {\n const key = keys[i];\n encodeItem(key);\n encodeItem(val[key]);\n }\n }\n }\n }\n encodeItem(value);\n if (\"slice\" in data) {\n return data.slice(0, offset);\n }\n const ret = new ArrayBuffer(offset);\n const retView = new DataView(ret);\n for (let i = 0; i < offset; ++i) {\n retView.setUint8(i, dataView.getUint8(i));\n }\n return ret;\n}\n//# sourceMappingURL=cbor.js.map","// https://gist.github.com/vbabak/c4e817100228e46ccd621cc4caf0f87f\n/**\n * Lookup table calculated for 0xEDB88320 divisor\n */\nconst crc32LookupTable = [\n 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685,\n 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995,\n 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648,\n 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990,\n 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755,\n 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145,\n 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206,\n 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980,\n 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705,\n 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527,\n 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772,\n 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290,\n 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719,\n 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925,\n 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202,\n 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960,\n 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733,\n 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467,\n 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048,\n 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054,\n 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443,\n 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945,\n 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430,\n 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580,\n 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225,\n 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143,\n 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732,\n 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850,\n 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135,\n 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109,\n 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954,\n 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920,\n 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877,\n 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603,\n 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992,\n 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934,\n 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795,\n 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105,\n 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270,\n 936918000, 2847714899, 3736837829, 1202900863, 817233897, 3183342108,\n 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449,\n 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471,\n 3272380065, 1510334235, 755167117,\n];\nconst toUint32 = (num) => {\n if (num >= 0) {\n return num;\n }\n const a = new Uint32Array(1);\n a[0] = num;\n return a[0];\n};\nexport const crc32 = (input) => {\n let crc = 0xffffffff;\n for (const byte of input) {\n const tableIndex = (crc ^ byte) & 0xff;\n const tableVal = crc32LookupTable?.[tableIndex];\n if (tableVal === undefined)\n throw new Error(\"tableIndex out of range 0-255\");\n crc = (crc >>> 8) ^ tableVal;\n }\n return toUint32(crc ^ 0xffffffff);\n};\n//# sourceMappingURL=crc32.js.map","import { base58UncheckedDecode, base58UncheckedEncode } from \"./base58.js\";\nimport { TaggedValue, cborDecode, cborEncode } from \"./cbor.js\";\nimport { crc32 } from \"./crc32.js\";\nexport const byronEncode = (source) => {\n const checksum = crc32(source);\n const taggedValue = new TaggedValue(source.buffer, 24);\n const cborEncodedAddress = cborEncode([taggedValue, checksum]);\n const address = base58UncheckedEncode(new Uint8Array(cborEncodedAddress));\n if (!address.startsWith(\"Ae2\") && !address.startsWith(\"Ddz\"))\n throw new Error(\"Unrecognised address format\");\n return address;\n};\nexport const byronDecode = (source) => {\n const bytes = base58UncheckedDecode(source);\n const cborDecoded = cborDecode(bytes.buffer);\n const taggedAddress = cborDecoded[0];\n if (taggedAddress === undefined)\n throw new Error(\"Unrecognised address format\");\n const checksum = cborDecoded[1];\n const newChecksum = crc32(taggedAddress.value);\n if (checksum !== newChecksum)\n throw new Error(\"Unrecognised address format\");\n return taggedAddress.value;\n};\n//# sourceMappingURL=byron.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nimport { byronDecode, byronEncode } from \"../utils/byron.js\";\nconst name = \"ada\";\nconst coinType = 1815;\nconst hrp = \"addr\";\nconst limit = 104;\nconst cardanoBech32Encode = createBech32Encoder(hrp, limit);\nconst cardanoBech32Decode = createBech32Decoder(hrp, limit);\nexport const encodeAdaAddress = (source) => {\n try {\n return byronEncode(source);\n }\n catch {\n return cardanoBech32Encode(source);\n }\n};\nexport const decodeAdaAddress = (source) => {\n if (source.toLowerCase().startsWith(hrp)) {\n return cardanoBech32Decode(source);\n }\n return byronDecode(source);\n};\nexport const ada = {\n name,\n coinType,\n encode: encodeAdaAddress,\n decode: decodeAdaAddress,\n};\n//# sourceMappingURL=ada.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"ae\";\nconst coinType = 457;\nexport const encodeAeAddress = (source) => {\n return `ak_${base58CheckEncode(source.slice(2))}`;\n};\nexport const decodeAeAddress = (source) => {\n return concatBytes(new Uint8Array([0x30, 0x78] /* 0x string */), base58CheckDecode(source.slice(3)));\n};\nexport const ae = {\n name,\n coinType,\n encode: encodeAeAddress,\n decode: decodeAeAddress,\n};\n//# sourceMappingURL=ae.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"aib\";\nconst coinType = 55;\nconst p2pkhVersions = [new Uint8Array([0x17])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeAibAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeAibAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const aib = {\n name,\n coinType,\n encode: encodeAibAddress,\n decode: decodeAibAddress,\n};\n//# sourceMappingURL=aib.js.map","import { bytesToHex as bytesToNoPrefixHex, hexToBytes as noPrefixHexToBytes, } from \"@noble/hashes/utils\";\n// https://github.com/wagmi-dev/viem/blob/0cd17e9e39fc88b414e125c1dfc9f55d7baf42b7/src/utils/encoding/toBytes.ts#L110C1-L132C2\nexport function hexToBytes(hex_) {\n let hex = hex_;\n let hexString = hex.slice(2);\n if (hexString.length % 2)\n hexString = `0${hexString}`;\n const bytes = new Uint8Array(hexString.length / 2);\n for (let index = 0; index < bytes.length; index++) {\n const start = index * 2;\n const hexByte = hexString.slice(start, start + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error(`Invalid byte sequence (\"${hexByte}\" in \"${hexString}\").`);\n bytes[index] = byte;\n }\n return bytes;\n}\n// https://github.com/wagmi-dev/viem/blob/0cd17e9e39fc88b414e125c1dfc9f55d7baf42b7/src/utils/encoding/fromHex.ts#L213C1-L220C2\nexport function hexToString(hex) {\n let bytes = hexToBytes(hex);\n return new TextDecoder().decode(bytes);\n}\nexport function bytesToString(bytes) {\n return new TextDecoder().decode(bytes);\n}\nexport function stringToBytes(str) {\n return new TextEncoder().encode(str);\n}\nexport function bytesToHex(bytes) {\n return `0x${bytesToNoPrefixHex(bytes)}`;\n}\nexport function bytesToBase10(bytes) {\n let bigInt = BigInt(0);\n for (let i = 0; i < bytes.length; i++) {\n bigInt = (bigInt << BigInt(8)) | BigInt(bytes[i]);\n }\n return bigInt.toString(10);\n}\nexport function base10ToBytes(base10) {\n let bigInt = BigInt(base10);\n const bytes = [];\n while (bigInt > 0) {\n bytes.unshift(Number(bigInt & BigInt(0xff)));\n bigInt >>= BigInt(8);\n }\n return new Uint8Array(bytes);\n}\nexport const bytesToHexWithoutPrefix = bytesToNoPrefixHex;\nexport const hexWithoutPrefixToBytes = noPrefixHexToBytes;\n//# sourceMappingURL=bytes.js.map","import { bytesToHex, hexWithoutPrefixToBytes } from \"../utils/bytes.js\";\nconst name = \"aion\";\nconst coinType = 425;\nconst hexRegex = /^[0-9A-Fa-f]{64}$/g;\nexport const encodeAionAddress = (source) => {\n if (source.length !== 32)\n throw new Error(\"Unrecognised address format\");\n return bytesToHex(source);\n};\nexport const decodeAionAddress = (source) => {\n const noPrefix = source.startsWith(\"0x\") ? source.slice(2) : source;\n if (noPrefix.length !== 64)\n throw new Error(\"Unrecognised address format\");\n if (!hexRegex.test(noPrefix))\n throw new Error(\"Unrecognised address format\");\n return hexWithoutPrefixToBytes(noPrefix);\n};\nexport const aion = {\n name,\n coinType,\n encode: encodeAionAddress,\n decode: decodeAionAddress,\n};\n//# sourceMappingURL=aion.js.map","/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n * @deprecated\n */\nimport { SHA384 as SHA384n, sha384 as sha384n, sha512_224 as sha512_224n, SHA512_224 as SHA512_224n, sha512_256 as sha512_256n, SHA512_256 as SHA512_256n, SHA512 as SHA512n, sha512 as sha512n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512 = SHA512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512 = sha512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA384 = SHA384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha384 = sha384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_224 = SHA512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_224 = sha512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_256 = SHA512_256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_256 = sha512_256n;\n//# sourceMappingURL=sha512.js.map","import { base32, utils } from \"@scure/base\";\nexport const base32Encode = base32.encode;\nexport const base32Decode = base32.decode;\nconst base32Unpadded = utils.chain(utils.radix2(5), utils.alphabet(\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\"), utils.join(\"\"));\nexport const base32UnpaddedEncode = base32Unpadded.encode;\nexport const base32UnpaddedDecode = base32Unpadded.decode;\nexport const base32CrockfordNormalise = (source) => source.toUpperCase().replace(/O/g, \"0\").replace(/[IL]/g, \"1\");\n//# sourceMappingURL=base32.js.map","import { sha512_256 } from \"@noble/hashes/sha512\";\nimport { utils } from \"@scure/base\";\nimport { base32UnpaddedDecode, base32UnpaddedEncode } from \"../utils/base32.js\";\nconst name = \"algo\";\nconst coinType = 283;\nconst algoChecksum = utils.checksum(4, (data) => sha512_256(data).slice(-4));\nexport const encodeAlgoAddress = (source) => {\n const checksum = algoChecksum.encode(source);\n return base32UnpaddedEncode(checksum);\n};\nexport const decodeAlgoAddress = (source) => {\n const decoded = base32UnpaddedDecode(source);\n if (decoded.length !== 36)\n throw new Error(\"Unrecognised address format\");\n return algoChecksum.decode(decoded);\n};\nexport const algo = {\n name,\n coinType,\n encode: encodeAlgoAddress,\n decode: decodeAlgoAddress,\n};\n//# sourceMappingURL=algo.js.map","import { base64urlnopad } from \"@scure/base\";\nconst name = \"ar\";\nconst coinType = 472;\nexport const encodeArAddress = base64urlnopad.encode;\nexport const decodeArAddress = base64urlnopad.decode;\nexport const ar = {\n name,\n coinType,\n encode: encodeArAddress,\n decode: decodeArAddress,\n};\n//# sourceMappingURL=ar.js.map","const name = \"ardr\";\nconst coinType = 16754;\nconst prefix = \"ARDOR\";\nconst alphabet = \"23456789ABCDEFGHJKLMNPQRSTUVWXYZ\";\nconst codewordMap = new Uint8Array([\n 3, 2, 1, 0, 7, 6, 5, 4, 13, 14, 15, 16, 12, 8, 9, 10, 11,\n]);\nconst glog = [\n 0, 0, 1, 18, 2, 5, 19, 11, 3, 29, 6, 27, 20, 8, 12, 23, 4, 10, 30, 17, 7, 22,\n 28, 26, 21, 25, 9, 16, 13, 14, 24, 15,\n];\nconst gexp = [\n 1, 2, 4, 8, 16, 5, 10, 20, 13, 26, 17, 7, 14, 28, 29, 31, 27, 19, 3, 6, 12,\n 24, 21, 15, 30, 25, 23, 11, 22, 9, 18, 1,\n];\nconst gmult = (a, b) => {\n if (a === 0 || b === 0)\n return 0;\n return gexp[(glog[a] + glog[b]) % 31];\n};\nconst ardrChecksum = (source) => {\n let sum = 0;\n for (let i = 1; i < 5; i++) {\n let t = 0;\n for (let j = 0; j < 31; j++) {\n if (j > 12 && j < 27)\n continue;\n let pos = j;\n if (j > 26)\n pos -= 14;\n t ^= gmult(source[pos], gexp[(i * j) % 31]);\n }\n sum |= t;\n }\n return sum === 0;\n};\nexport const encodeArdrAddress = (source) => {\n const chars = [];\n for (let i = 0, j = 0; i < source.length; i++) {\n const byte = source[i];\n const writeIndex = codewordMap[j++];\n chars[writeIndex] = alphabet[16 * ((byte & 0xf0) >> 4) + (byte & 0x0f)];\n }\n return `${prefix}-${chars.slice(0, 4).join(\"\")}-${chars\n .slice(4, 8)\n .join(\"\")}-${chars.slice(8, 12).join(\"\")}-${chars.slice(12, 17).join(\"\")}`;\n};\nexport const decodeArdrAddress = (source) => {\n if (!source.startsWith(`${prefix}-`) || source.length !== 26)\n throw new Error(\"Unrecognised address format\");\n const joined = source.slice(6);\n const codeword = new Uint8Array([\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ]);\n let dashCount = 0;\n for (let i = 0, j = 0; i < 20; i++) {\n const char = joined[i];\n if (char === \"-\") {\n dashCount++;\n continue;\n }\n const pos = alphabet.indexOf(char);\n if (pos === -1)\n throw new Error(\"Unrecognised address format\");\n const writeIndex = codewordMap[j++];\n codeword[writeIndex] = pos;\n }\n if (!ardrChecksum(codeword))\n throw new Error(\"Unrecognised address format\");\n return codeword;\n};\nexport const ardr = {\n name,\n coinType,\n encode: encodeArdrAddress,\n decode: decodeArdrAddress,\n};\n//# sourceMappingURL=ardr.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"ark\";\nconst coinType = 111;\nexport const encodeArkAddress = base58CheckEncode;\nexport const decodeArkAddress = (source) => {\n const decoded = base58CheckDecode(source);\n if (decoded[0] !== 23)\n throw new Error(\"Invalid address\");\n return decoded;\n};\nexport const ark = {\n name,\n coinType,\n encode: encodeArkAddress,\n decode: decodeArkAddress,\n};\n//# sourceMappingURL=ark.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"atom\";\nconst coinType = 118;\nexport const encodeAtomAddress = createBech32Encoder(\"cosmos\");\nexport const decodeAtomAddress = createBech32Decoder(\"cosmos\");\nexport const atom = {\n name,\n coinType,\n encode: encodeAtomAddress,\n decode: decodeAtomAddress,\n};\n//# sourceMappingURL=atom.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"avax\";\nconst coinType = 9000;\nconst hrp = \"avax\";\nconst decodeBech32 = createBech32Decoder(hrp);\nexport const encodeAvaxAddress = createBech32Encoder(hrp);\nexport const decodeAvaxAddress = (source) => {\n let address;\n const [id, possibleAddr] = source.split(\"-\");\n if (!possibleAddr) {\n address = id;\n }\n else {\n address = possibleAddr;\n }\n return decodeBech32(address);\n};\nexport const avax = {\n name,\n coinType,\n encode: encodeAvaxAddress,\n decode: decodeAvaxAddress,\n};\n//# sourceMappingURL=avax.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"./base58.js\";\nimport { createBech32SegwitDecoder, createBech32SegwitEncoder, } from \"./bech32.js\";\nexport const createBitcoinDecoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const decodeBech32 = createBech32SegwitDecoder(hrp);\n const decodeBase58 = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\n return (source) => {\n if (source.toLowerCase().startsWith(hrp + \"1\")) {\n return decodeBech32(source);\n }\n return decodeBase58(source);\n };\n};\nexport const createBitcoinEncoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const encodeBech32 = createBech32SegwitEncoder(hrp);\n const encodeBase58 = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\n return (source) => {\n try {\n return encodeBase58(source);\n }\n catch {\n return encodeBech32(source);\n }\n };\n};\n//# sourceMappingURL=bitcoin.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"bcd\";\nconst coinType = 999;\nconst hrp = \"bcd\";\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeBcdAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeBcdAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const bcd = {\n name,\n coinType,\n encode: encodeBcdAddress,\n decode: decodeBcdAddress,\n};\n//# sourceMappingURL=bcd.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nconst prefix = \"bitcoincash\";\nconst prefixBytes = new Uint8Array([2, 9, 20, 3, 15, 9, 14, 3, 1, 19, 8, 0]); // bitcoincash + 0x00\nconst hashSize = [160, 192, 224, 256, 320, 384, 448, 512];\nconst hashSizeLookup = Object.fromEntries(hashSize.map((size, index) => [size, index]));\nconst radix5 = utils.radix2(5);\nconst bchBase32 = utils.chain(utils.alphabet(\"qpzry9x8gf2tvdw0s3jn54khce6mua7l\"), utils.join(\"\"));\nconst checksumToUint5Array = (checksum) => {\n const result = new Uint8Array(8);\n for (let i = 0; i < 8; i++) {\n result[7 - i] = Number(checksum & 31n);\n checksum = checksum >> 5n;\n }\n return result;\n};\nconst polymod = (data) => {\n const GENERATOR = [\n 0x98f2bc8e61n,\n 0x79b76d99e2n,\n 0xf33e5fb3c4n,\n 0xae2eabe2a8n,\n 0x1e4f43e470n,\n ];\n let checksum = 1n;\n for (var i = 0; i < data.length; ++i) {\n const value = data[i];\n const topBits = checksum >> 35n;\n checksum = ((checksum & 0x07ffffffffn) << 5n) ^ BigInt(value);\n for (var j = 0; j < GENERATOR.length; ++j) {\n if (((topBits >> BigInt(j)) & 1n) === 1n) {\n checksum = checksum ^ GENERATOR[j];\n }\n }\n }\n return checksum ^ 1n;\n};\nconst normaliseBchAddress = (str) => {\n const lowercased = str.toLowerCase();\n if (str === lowercased)\n return lowercased;\n const uppercased = str.toUpperCase();\n if (str === uppercased)\n return lowercased;\n throw new Error(\"Unrecognised address format\");\n};\nconst isChecksumValid = (source) => {\n const checksumData = concatBytes(prefixBytes, new Uint8Array(source));\n return polymod(checksumData) === 0n;\n};\nexport const encodeBchAddressWithVersion = (version, source) => {\n const versionByte = new Uint8Array([\n version + hashSizeLookup[source.length * 8],\n ]);\n const radix5Encoded = radix5.encode(concatBytes(versionByte, source));\n const payloadData = new Uint8Array(radix5Encoded);\n const checksumData = concatBytes(prefixBytes, payloadData, new Uint8Array(8));\n const checksum = checksumToUint5Array(polymod(checksumData));\n const payload = concatBytes(payloadData, checksum);\n return `${prefix}:${bchBase32.encode(Array.from(payload))}`;\n};\nexport const decodeBchAddressToTypeAndHash = (source) => {\n const normalised = normaliseBchAddress(source);\n let [prefix, payload] = normalised.split(\":\");\n if (!payload)\n payload = prefix;\n else if (prefix !== \"bitcoincash\")\n throw new Error(\"Unrecognised address format\");\n const base32Decoded = bchBase32.decode(payload);\n if (!isChecksumValid(base32Decoded))\n throw new Error(\"Invalid checksum\");\n const [versionByte, ...hash] = radix5.decode(Array.from(base32Decoded.slice(0, -8)));\n if (hashSize[versionByte & 7] !== hash.length * 8)\n throw new Error(\"Unrecognised address format\");\n const type = versionByte & 120;\n return {\n type,\n hash,\n };\n};\n//# sourceMappingURL=bch.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { createBase58VersionedDecoder } from \"../utils/base58.js\";\nimport { decodeBchAddressToTypeAndHash, encodeBchAddressWithVersion, } from \"../utils/bch.js\";\nconst name = \"bch\";\nconst coinType = 145;\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nconst bchBase58Decode = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const encodeBchAddress = (source) => {\n if (source[0] === 0x76) {\n if (source[1] !== 0xa9 ||\n source[source.length - 2] !== 0x88 ||\n source[source.length - 1] !== 0xac)\n throw new Error(\"Unrecognised address format\");\n return encodeBchAddressWithVersion(0, source.slice(3, 3 + source[2]));\n }\n if (source[0] === 0xa9) {\n if (source[source.length - 1] !== 0x87)\n throw new Error(\"Unrecognised address format\");\n return encodeBchAddressWithVersion(8, source.slice(2, 2 + source[1]));\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const decodeBchAddress = (source) => {\n try {\n return bchBase58Decode(source);\n }\n catch {\n const { type, hash } = decodeBchAddressToTypeAndHash(source);\n if (type === 0)\n return concatBytes(new Uint8Array([0x76, 0xa9, 0x14]), new Uint8Array(hash), new Uint8Array([0x88, 0xac]));\n if (type === 8)\n return concatBytes(new Uint8Array([0xa9, 0x14]), new Uint8Array(hash), new Uint8Array([0x87]));\n throw new Error(\"Unrecognised address format\");\n }\n};\nexport const bch = {\n name,\n coinType,\n encode: encodeBchAddress,\n decode: decodeBchAddress,\n};\n//# sourceMappingURL=bch.js.map","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createHasher, createXOFer, Hash, swap32IfBE, toBytes, u32 } from \"./utils.js\";\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n clean(B);\n}\n/** Keccak sponge function. */\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n this.enableXOF = false;\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n // Can be passed from user as dkLen\n anumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (!(0 < blockLen && blockLen < 200))\n throw new Error('only keccak-f1600 function is supported');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n clone() {\n return this._cloneInto();\n }\n keccak() {\n swap32IfBE(this.state32);\n keccakP(this.state32, this.rounds);\n swap32IfBE(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { blockLen, state } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n aexists(this, false);\n abytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n anumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n aoutput(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n clean(this.state);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => createHasher(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexport const sha3_224 = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256 = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384 = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512 = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n/** keccak-224 hash function. */\nexport const keccak_224 = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256 = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384 = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512 = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\nconst genShake = (suffix, blockLen, outputLen) => createXOFer((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128 = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256 = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n//# sourceMappingURL=sha3.js.map","import { base58xmr } from \"@scure/base\";\nconst name = \"xmr\";\nconst coinType = 128;\nexport const encodeXmrAddress = base58xmr.encode;\nexport const decodeXmrAddress = base58xmr.decode;\nexport const xmr = {\n name,\n coinType,\n encode: encodeXmrAddress,\n decode: decodeXmrAddress,\n};\n//# sourceMappingURL=xmr.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nimport { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"bcn\";\nconst coinType = 204;\nconst bcnChecksum = utils.checksum(4, keccak_256);\nexport const encodeBcnAddress = (source) => {\n const checksum = keccak_256(source).slice(0, 4);\n return encodeXmrAddress(concatBytes(source, checksum));\n};\nexport const decodeBcnAddress = (source) => {\n const decoded = decodeXmrAddress(source);\n const tag = decoded.slice(0, -68);\n if (decoded.length < 68 ||\n (!equalBytes(tag, new Uint8Array([0x06])) &&\n !equalBytes(tag, new Uint8Array([0xce, 0xf6, 0x22]))))\n throw new Error(\"Unrecognised address format\");\n return bcnChecksum.decode(decoded);\n};\nexport const bcn = {\n name,\n coinType,\n encode: encodeBcnAddress,\n decode: decodeBcnAddress,\n};\n//# sourceMappingURL=bcn.js.map","import { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"bdx\";\nconst coinType = 570;\nexport const encodeBdxAddress = encodeXmrAddress;\nexport const decodeBdxAddress = decodeXmrAddress;\nexport const bdx = {\n name,\n coinType,\n encode: encodeBdxAddress,\n decode: decodeBdxAddress,\n};\n//# sourceMappingURL=bdx.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"bnb\";\nconst coinType = 714;\nconst hrp = \"bnb\";\nexport const encodeBnbAddress = createBech32Encoder(hrp);\nexport const decodeBnbAddress = createBech32Decoder(hrp);\nexport const bnb = {\n name,\n coinType,\n encode: encodeBnbAddress,\n decode: decodeBnbAddress,\n};\n//# sourceMappingURL=bnb.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"bps\";\nconst coinType = 576;\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeBpsAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeBpsAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const bps = {\n name,\n coinType,\n encode: encodeBpsAddress,\n decode: decodeBpsAddress,\n};\n//# sourceMappingURL=bps.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"bsv\";\nconst coinType = 236;\nexport const encodeBsvAddress = (source) => base58CheckEncode(concatBytes(new Uint8Array([0x00]), source));\nexport const decodeBsvAddress = (source) => {\n const decoded = base58CheckDecode(source);\n if (decoded.length !== 21)\n throw new Error(\"Unrecognised address format\");\n const version = decoded[0];\n if (version !== 0x00)\n throw new Error(\"Unrecognised address format\");\n return decoded.slice(1);\n};\nexport const bsv = {\n name,\n coinType,\n encode: encodeBsvAddress,\n decode: decodeBsvAddress,\n};\n//# sourceMappingURL=bsv.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"btc\";\nconst coinType = 0;\nconst hrp = \"bc\";\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeBtcAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeBtcAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const btc = {\n name,\n coinType,\n encode: encodeBtcAddress,\n decode: decodeBtcAddress,\n};\n//# sourceMappingURL=btc.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"btg\";\nconst coinType = 156;\nconst hrp = \"btg\";\nconst p2pkhVersions = [new Uint8Array([0x26])];\nconst p2shVersions = [new Uint8Array([0x17])];\nexport const encodeBtgAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeBtgAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const btg = {\n name,\n coinType,\n encode: encodeBtgAddress,\n decode: decodeBtgAddress,\n};\n//# sourceMappingURL=btg.js.map","import { createBech32SegwitDecoder, createBech32SegwitEncoder, } from \"../utils/bech32.js\";\nconst name = \"btm\";\nconst coinType = 153;\nconst hrp = \"bm\";\nexport const encodeBtmAddress = createBech32SegwitEncoder(hrp);\nexport const decodeBtmAddress = createBech32SegwitDecoder(hrp);\nexport const btm = {\n name,\n coinType,\n encode: encodeBtmAddress,\n decode: decodeBtmAddress,\n};\n//# sourceMappingURL=btm.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"bts\";\nconst coinType = 308;\nconst prefix = \"BTS\";\nexport const encodeBtsAddress = createEosEncoder(prefix);\nexport const decodeBtsAddress = createEosDecoder(prefix);\nexport const bts = {\n name,\n coinType,\n encode: encodeBtsAddress,\n decode: decodeBtsAddress,\n};\n//# sourceMappingURL=bts.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"cca\";\nconst coinType = 489;\nconst p2pkhVersions = [new Uint8Array([0x0b])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeCcaAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeCcaAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const cca = {\n name,\n coinType,\n encode: encodeCcaAddress,\n decode: decodeCcaAddress,\n};\n//# sourceMappingURL=cca.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"ccxx\";\nconst coinType = 571;\nconst hrp = \"ccx\";\nconst p2pkhVersions = [new Uint8Array([0x89])];\nconst p2shVersions = [new Uint8Array([0x4b]), new Uint8Array([0x05])];\nexport const encodeCcxxAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeCcxxAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const ccxx = {\n name,\n coinType,\n encode: encodeCcxxAddress,\n decode: decodeCcxxAddress,\n};\n//# sourceMappingURL=ccxx.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { bytesToHex, hexToBytes, stringToBytes } from \"./bytes.js\";\nexport const stripHexPrefix = (str) => str.startsWith(\"0x\") ? str.slice(2) : str;\nexport const rawChecksumAddress = ({ address, hash, length, }) => {\n for (let i = 0; i < length; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase();\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase();\n }\n }\n return `0x${address.join(\"\")}`;\n};\nexport function checksumAddress(address_, chainId) {\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase();\n const hash = keccak_256(stringToBytes(hexAddress));\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split(\"\");\n return rawChecksumAddress({ address, hash, length: 40 });\n}\nexport function isAddress(address) {\n return /^0x[a-fA-F0-9]{40}$/.test(address);\n}\nexport function isValidChecksumAddress(address, chainId) {\n if (!isAddress(address))\n return false;\n if (address === checksumAddress(address, chainId))\n return true;\n const prefixlessAddress = stripHexPrefix(address);\n // all lowercase\n if (prefixlessAddress.toLowerCase() === prefixlessAddress)\n return true;\n // all uppercase\n if (prefixlessAddress.toUpperCase() === prefixlessAddress)\n return true;\n return false;\n}\nexport const createHexChecksummedEncoder = (chainId) => (source) => checksumAddress(bytesToHex(source), chainId);\nexport const createHexChecksummedDecoder = (chainId) => (source) => {\n if (!isValidChecksumAddress(source, chainId)) {\n throw new Error(\"Unrecognised address format\");\n }\n return hexToBytes(source);\n};\n//# sourceMappingURL=hex.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"celoLegacy\";\nconst coinType = 52752;\nexport const encodeCeloLegacyAddress = createHexChecksummedEncoder();\nexport const decodeCeloLegacyAddress = createHexChecksummedDecoder();\nexport const celoLegacy = {\n name,\n coinType,\n encode: encodeCeloLegacyAddress,\n decode: decodeCeloLegacyAddress,\n};\n//# sourceMappingURL=celoLegacy.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"ckb\";\nconst coinType = 309;\nconst hrp = \"ckb\";\nexport const encodeCkbAddress = createBech32Encoder(hrp);\nexport const decodeCkbAddress = createBech32Decoder(hrp);\nexport const ckb = {\n name,\n coinType,\n encode: encodeCkbAddress,\n decode: decodeCkbAddress,\n};\n//# sourceMappingURL=ckb.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"cloLegacy\";\nconst coinType = 820;\nexport const encodeCloLegacyAddress = createHexChecksummedEncoder();\nexport const decodeCloLegacyAddress = createHexChecksummedDecoder();\nexport const cloLegacy = {\n name,\n coinType,\n encode: encodeCloLegacyAddress,\n decode: decodeCloLegacyAddress,\n};\n//# sourceMappingURL=cloLegacy.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"dash\";\nconst coinType = 5;\nconst p2pkhVersions = [new Uint8Array([0x4c])];\nconst p2shVersions = [new Uint8Array([0x10])];\nexport const encodeDashAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeDashAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const dash = {\n name,\n coinType,\n encode: encodeDashAddress,\n decode: decodeDashAddress,\n};\n//# sourceMappingURL=dash.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"dcr\";\nconst coinType = 42;\nexport const encodeDcrAddress = base58UncheckedEncode;\nexport const decodeDcrAddress = base58UncheckedDecode;\nexport const dcr = {\n name,\n coinType,\n encode: encodeDcrAddress,\n decode: decodeDcrAddress,\n};\n//# sourceMappingURL=dcr.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"dgb\";\nconst coinType = 20;\nconst hrp = \"dgb\";\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x3f])];\nexport const encodeDgbAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeDgbAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const dgb = {\n name,\n coinType,\n encode: encodeDgbAddress,\n decode: decodeDgbAddress,\n};\n//# sourceMappingURL=dgb.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"divi\";\nconst coinType = 301;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0xd])];\nexport const encodeDiviAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeDiviAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const divi = {\n name,\n coinType,\n encode: encodeDiviAddress,\n decode: decodeDiviAddress,\n};\n//# sourceMappingURL=divi.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"doge\";\nconst coinType = 3;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x16])];\nexport const encodeDogeAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeDogeAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const doge = {\n name,\n coinType,\n encode: encodeDogeAddress,\n decode: decodeDogeAddress,\n};\n//# sourceMappingURL=doge.js.map","/**\n * Internal helpers for blake hash.\n * @module\n */\nimport { rotr } from \"./utils.js\";\n/**\n * Internal blake variable.\n * For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1].\n */\n// prettier-ignore\nexport const BSIGMA = /* @__PURE__ */ Uint8Array.from([\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n // Blake1, unused in others\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n]);\n// Mixing function G splitted in two halfs\nexport function G1s(a, b, c, d, x) {\n a = (a + b + x) | 0;\n d = rotr(d ^ a, 16);\n c = (c + d) | 0;\n b = rotr(b ^ c, 12);\n return { a, b, c, d };\n}\nexport function G2s(a, b, c, d, x) {\n a = (a + b + x) | 0;\n d = rotr(d ^ a, 8);\n c = (c + d) | 0;\n b = rotr(b ^ c, 7);\n return { a, b, c, d };\n}\n//# sourceMappingURL=_blake.js.map","/**\n * blake2b (64-bit) & blake2s (8 to 32-bit) hash functions.\n * b could have been faster, but there is no fast u64 in js, so s is 1.5x faster.\n * @module\n */\nimport { BSIGMA, G1s, G2s } from \"./_blake.js\";\nimport { SHA256_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createOptHasher, Hash, swap32IfBE, swap8IfBE, toBytes, u32 } from \"./utils.js\";\n// Same as SHA512_IV, but swapped endianness: LE instead of BE. iv[1] is iv[0], etc.\nconst B2B_IV = /* @__PURE__ */ Uint32Array.from([\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a,\n 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19,\n]);\n// Temporary buffer\nconst BBUF = /* @__PURE__ */ new Uint32Array(32);\n// Mixing function G splitted in two halfs\nfunction G1b(a, b, c, d, msg, x) {\n // NOTE: V is LE here\n const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n // v[a] = (v[a] + v[b] + x) | 0;\n let ll = u64.add3L(Al, Bl, Xl);\n Ah = u64.add3H(ll, Ah, Bh, Xh);\n Al = ll | 0;\n // v[d] = rotr(v[d] ^ v[a], 32)\n ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) });\n // v[c] = (v[c] + v[d]) | 0;\n ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n // v[b] = rotr(v[b] ^ v[c], 24)\n ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 24), Bl: u64.rotrSL(Bh, Bl, 24) });\n (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\nfunction G2b(a, b, c, d, msg, x) {\n // NOTE: V is LE here\n const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n // v[a] = (v[a] + v[b] + x) | 0;\n let ll = u64.add3L(Al, Bl, Xl);\n Ah = u64.add3H(ll, Ah, Bh, Xh);\n Al = ll | 0;\n // v[d] = rotr(v[d] ^ v[a], 16)\n ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) });\n // v[c] = (v[c] + v[d]) | 0;\n ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n // v[b] = rotr(v[b] ^ v[c], 63)\n ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n ({ Bh, Bl } = { Bh: u64.rotrBH(Bh, Bl, 63), Bl: u64.rotrBL(Bh, Bl, 63) });\n (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\nfunction checkBlake2Opts(outputLen, opts = {}, keyLen, saltLen, persLen) {\n anumber(keyLen);\n if (outputLen < 0 || outputLen > keyLen)\n throw new Error('outputLen bigger than keyLen');\n const { key, salt, personalization } = opts;\n if (key !== undefined && (key.length < 1 || key.length > keyLen))\n throw new Error('key length must be undefined or 1..' + keyLen);\n if (salt !== undefined && salt.length !== saltLen)\n throw new Error('salt must be undefined or ' + saltLen);\n if (personalization !== undefined && personalization.length !== persLen)\n throw new Error('personalization must be undefined or ' + persLen);\n}\n/** Class, from which others are subclassed. */\nexport class BLAKE2 extends Hash {\n constructor(blockLen, outputLen) {\n super();\n this.finished = false;\n this.destroyed = false;\n this.length = 0;\n this.pos = 0;\n anumber(blockLen);\n anumber(outputLen);\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.buffer = new Uint8Array(blockLen);\n this.buffer32 = u32(this.buffer);\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n // Main difference with other hashes: there is flag for last block,\n // so we cannot process current block before we know that there\n // is the next one. This significantly complicates logic and reduces ability\n // to do zero-copy processing\n const { blockLen, buffer, buffer32 } = this;\n const len = data.length;\n const offset = data.byteOffset;\n const buf = data.buffer;\n for (let pos = 0; pos < len;) {\n // If buffer is full and we still have input (don't process last block, same as blake2s)\n if (this.pos === blockLen) {\n swap32IfBE(buffer32);\n this.compress(buffer32, 0, false);\n swap32IfBE(buffer32);\n this.pos = 0;\n }\n const take = Math.min(blockLen - this.pos, len - pos);\n const dataOffset = offset + pos;\n // full block && aligned to 4 bytes && not last in input\n if (take === blockLen && !(dataOffset % 4) && pos + take < len) {\n const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4));\n swap32IfBE(data32);\n for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) {\n this.length += blockLen;\n this.compress(data32, pos32, false);\n }\n swap32IfBE(data32);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n this.length += take;\n pos += take;\n }\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n const { pos, buffer32 } = this;\n this.finished = true;\n // Padding\n clean(this.buffer.subarray(pos));\n swap32IfBE(buffer32);\n this.compress(buffer32, 0, true);\n swap32IfBE(buffer32);\n const out32 = u32(out);\n this.get().forEach((v, i) => (out32[i] = swap8IfBE(v)));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n const { buffer, length, finished, destroyed, outputLen, pos } = this;\n to || (to = new this.constructor({ dkLen: outputLen }));\n to.set(...this.get());\n to.buffer.set(buffer);\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n // @ts-ignore\n to.outputLen = outputLen;\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\nexport class BLAKE2b extends BLAKE2 {\n constructor(opts = {}) {\n const olen = opts.dkLen === undefined ? 64 : opts.dkLen;\n super(128, olen);\n // Same as SHA-512, but LE\n this.v0l = B2B_IV[0] | 0;\n this.v0h = B2B_IV[1] | 0;\n this.v1l = B2B_IV[2] | 0;\n this.v1h = B2B_IV[3] | 0;\n this.v2l = B2B_IV[4] | 0;\n this.v2h = B2B_IV[5] | 0;\n this.v3l = B2B_IV[6] | 0;\n this.v3h = B2B_IV[7] | 0;\n this.v4l = B2B_IV[8] | 0;\n this.v4h = B2B_IV[9] | 0;\n this.v5l = B2B_IV[10] | 0;\n this.v5h = B2B_IV[11] | 0;\n this.v6l = B2B_IV[12] | 0;\n this.v6h = B2B_IV[13] | 0;\n this.v7l = B2B_IV[14] | 0;\n this.v7h = B2B_IV[15] | 0;\n checkBlake2Opts(olen, opts, 64, 16, 16);\n let { key, personalization, salt } = opts;\n let keyLength = 0;\n if (key !== undefined) {\n key = toBytes(key);\n keyLength = key.length;\n }\n this.v0l ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n if (salt !== undefined) {\n salt = toBytes(salt);\n const slt = u32(salt);\n this.v4l ^= swap8IfBE(slt[0]);\n this.v4h ^= swap8IfBE(slt[1]);\n this.v5l ^= swap8IfBE(slt[2]);\n this.v5h ^= swap8IfBE(slt[3]);\n }\n if (personalization !== undefined) {\n personalization = toBytes(personalization);\n const pers = u32(personalization);\n this.v6l ^= swap8IfBE(pers[0]);\n this.v6h ^= swap8IfBE(pers[1]);\n this.v7l ^= swap8IfBE(pers[2]);\n this.v7h ^= swap8IfBE(pers[3]);\n }\n if (key !== undefined) {\n // Pad to blockLen and update\n const tmp = new Uint8Array(this.blockLen);\n tmp.set(key);\n this.update(tmp);\n }\n }\n // prettier-ignore\n get() {\n let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this;\n return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h];\n }\n // prettier-ignore\n set(v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h) {\n this.v0l = v0l | 0;\n this.v0h = v0h | 0;\n this.v1l = v1l | 0;\n this.v1h = v1h | 0;\n this.v2l = v2l | 0;\n this.v2h = v2h | 0;\n this.v3l = v3l | 0;\n this.v3h = v3h | 0;\n this.v4l = v4l | 0;\n this.v4h = v4h | 0;\n this.v5l = v5l | 0;\n this.v5h = v5h | 0;\n this.v6l = v6l | 0;\n this.v6h = v6h | 0;\n this.v7l = v7l | 0;\n this.v7h = v7h | 0;\n }\n compress(msg, offset, isLast) {\n this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state.\n BBUF.set(B2B_IV, 16); // Second half from IV.\n let { h, l } = u64.fromBig(BigInt(this.length));\n BBUF[24] = B2B_IV[8] ^ l; // Low word of the offset.\n BBUF[25] = B2B_IV[9] ^ h; // High word.\n // Invert all bits for last block\n if (isLast) {\n BBUF[28] = ~BBUF[28];\n BBUF[29] = ~BBUF[29];\n }\n let j = 0;\n const s = BSIGMA;\n for (let i = 0; i < 12; i++) {\n G1b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n G2b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n G1b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n G2b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n G1b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n G2b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n G1b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n G2b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n G1b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n G2b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n G1b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n G2b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n G1b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n G2b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n G1b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n G2b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n }\n this.v0l ^= BBUF[0] ^ BBUF[16];\n this.v0h ^= BBUF[1] ^ BBUF[17];\n this.v1l ^= BBUF[2] ^ BBUF[18];\n this.v1h ^= BBUF[3] ^ BBUF[19];\n this.v2l ^= BBUF[4] ^ BBUF[20];\n this.v2h ^= BBUF[5] ^ BBUF[21];\n this.v3l ^= BBUF[6] ^ BBUF[22];\n this.v3h ^= BBUF[7] ^ BBUF[23];\n this.v4l ^= BBUF[8] ^ BBUF[24];\n this.v4h ^= BBUF[9] ^ BBUF[25];\n this.v5l ^= BBUF[10] ^ BBUF[26];\n this.v5h ^= BBUF[11] ^ BBUF[27];\n this.v6l ^= BBUF[12] ^ BBUF[28];\n this.v6h ^= BBUF[13] ^ BBUF[29];\n this.v7l ^= BBUF[14] ^ BBUF[30];\n this.v7h ^= BBUF[15] ^ BBUF[31];\n clean(BBUF);\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer32);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n/**\n * Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2b = /* @__PURE__ */ createOptHasher((opts) => new BLAKE2b(opts));\n// prettier-ignore\nexport function compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) {\n let j = 0;\n for (let i = 0; i < rounds; i++) {\n ({ a: v0, b: v4, c: v8, d: v12 } = G1s(v0, v4, v8, v12, msg[offset + s[j++]]));\n ({ a: v0, b: v4, c: v8, d: v12 } = G2s(v0, v4, v8, v12, msg[offset + s[j++]]));\n ({ a: v1, b: v5, c: v9, d: v13 } = G1s(v1, v5, v9, v13, msg[offset + s[j++]]));\n ({ a: v1, b: v5, c: v9, d: v13 } = G2s(v1, v5, v9, v13, msg[offset + s[j++]]));\n ({ a: v2, b: v6, c: v10, d: v14 } = G1s(v2, v6, v10, v14, msg[offset + s[j++]]));\n ({ a: v2, b: v6, c: v10, d: v14 } = G2s(v2, v6, v10, v14, msg[offset + s[j++]]));\n ({ a: v3, b: v7, c: v11, d: v15 } = G1s(v3, v7, v11, v15, msg[offset + s[j++]]));\n ({ a: v3, b: v7, c: v11, d: v15 } = G2s(v3, v7, v11, v15, msg[offset + s[j++]]));\n ({ a: v0, b: v5, c: v10, d: v15 } = G1s(v0, v5, v10, v15, msg[offset + s[j++]]));\n ({ a: v0, b: v5, c: v10, d: v15 } = G2s(v0, v5, v10, v15, msg[offset + s[j++]]));\n ({ a: v1, b: v6, c: v11, d: v12 } = G1s(v1, v6, v11, v12, msg[offset + s[j++]]));\n ({ a: v1, b: v6, c: v11, d: v12 } = G2s(v1, v6, v11, v12, msg[offset + s[j++]]));\n ({ a: v2, b: v7, c: v8, d: v13 } = G1s(v2, v7, v8, v13, msg[offset + s[j++]]));\n ({ a: v2, b: v7, c: v8, d: v13 } = G2s(v2, v7, v8, v13, msg[offset + s[j++]]));\n ({ a: v3, b: v4, c: v9, d: v14 } = G1s(v3, v4, v9, v14, msg[offset + s[j++]]));\n ({ a: v3, b: v4, c: v9, d: v14 } = G2s(v3, v4, v9, v14, msg[offset + s[j++]]));\n }\n return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 };\n}\nconst B2S_IV = SHA256_IV;\nexport class BLAKE2s extends BLAKE2 {\n constructor(opts = {}) {\n const olen = opts.dkLen === undefined ? 32 : opts.dkLen;\n super(64, olen);\n // Internal state, same as SHA-256\n this.v0 = B2S_IV[0] | 0;\n this.v1 = B2S_IV[1] | 0;\n this.v2 = B2S_IV[2] | 0;\n this.v3 = B2S_IV[3] | 0;\n this.v4 = B2S_IV[4] | 0;\n this.v5 = B2S_IV[5] | 0;\n this.v6 = B2S_IV[6] | 0;\n this.v7 = B2S_IV[7] | 0;\n checkBlake2Opts(olen, opts, 32, 8, 8);\n let { key, personalization, salt } = opts;\n let keyLength = 0;\n if (key !== undefined) {\n key = toBytes(key);\n keyLength = key.length;\n }\n this.v0 ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n if (salt !== undefined) {\n salt = toBytes(salt);\n const slt = u32(salt);\n this.v4 ^= swap8IfBE(slt[0]);\n this.v5 ^= swap8IfBE(slt[1]);\n }\n if (personalization !== undefined) {\n personalization = toBytes(personalization);\n const pers = u32(personalization);\n this.v6 ^= swap8IfBE(pers[0]);\n this.v7 ^= swap8IfBE(pers[1]);\n }\n if (key !== undefined) {\n // Pad to blockLen and update\n abytes(key);\n const tmp = new Uint8Array(this.blockLen);\n tmp.set(key);\n this.update(tmp);\n }\n }\n get() {\n const { v0, v1, v2, v3, v4, v5, v6, v7 } = this;\n return [v0, v1, v2, v3, v4, v5, v6, v7];\n }\n // prettier-ignore\n set(v0, v1, v2, v3, v4, v5, v6, v7) {\n this.v0 = v0 | 0;\n this.v1 = v1 | 0;\n this.v2 = v2 | 0;\n this.v3 = v3 | 0;\n this.v4 = v4 | 0;\n this.v5 = v5 | 0;\n this.v6 = v6 | 0;\n this.v7 = v7 | 0;\n }\n compress(msg, offset, isLast) {\n const { h, l } = u64.fromBig(BigInt(this.length));\n // prettier-ignore\n const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(BSIGMA, offset, msg, 10, this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]);\n this.v0 ^= v0 ^ v8;\n this.v1 ^= v1 ^ v9;\n this.v2 ^= v2 ^ v10;\n this.v3 ^= v3 ^ v11;\n this.v4 ^= v4 ^ v12;\n this.v5 ^= v5 ^ v13;\n this.v6 ^= v6 ^ v14;\n this.v7 ^= v7 ^ v15;\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer32);\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n/**\n * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2s = /* @__PURE__ */ createOptHasher((opts) => new BLAKE2s(opts));\n//# sourceMappingURL=blake2.js.map","/**\n * Blake2b hash function. Focuses on 64-bit platforms, but in JS speed different from Blake2s is negligible.\n * @module\n * @deprecated\n */\nimport { BLAKE2b as B2B, blake2b as b2b } from \"./blake2.js\";\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const BLAKE2b = B2B;\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const blake2b = b2b;\n//# sourceMappingURL=blake2b.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base58UncheckedDecode, base58UncheckedEncode } from \"./base58.js\";\nconst prefixStringBytes = new Uint8Array([\n 0x53, 0x53, 0x35, 0x38, 0x50, 0x52, 0x45,\n]);\nconst dotChecksum = (sourceWithTypePrefix) => blake2b(concatBytes(prefixStringBytes, sourceWithTypePrefix)).slice(0, 2);\nexport const createDotAddressEncoder = (type) => (source) => {\n const typePrefix = new Uint8Array([type]);\n const sourceWithTypePrefix = concatBytes(typePrefix, source);\n const checksum = dotChecksum(sourceWithTypePrefix);\n return base58UncheckedEncode(concatBytes(sourceWithTypePrefix, checksum));\n};\nexport const createDotAddressDecoder = (type) => (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded[0] !== type)\n throw new Error(\"Unrecognized address format\");\n const checksum = decoded.slice(33, 35);\n const newChecksum = dotChecksum(decoded.slice(0, 33));\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognized address format\");\n return decoded.slice(1, 33);\n};\n//# sourceMappingURL=dot.js.map","import { createDotAddressDecoder, createDotAddressEncoder, } from \"../utils/dot.js\";\nconst name = \"dot\";\nconst coinType = 354;\nconst dotType = 0;\nexport const encodeDotAddress = createDotAddressEncoder(dotType);\nexport const decodeDotAddress = createDotAddressDecoder(dotType);\nexport const dot = {\n name,\n coinType,\n encode: encodeDotAddress,\n decode: decodeDotAddress,\n};\n//# sourceMappingURL=dot.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"egld\";\nconst coinType = 508;\nexport const encodeEgldAddress = createBech32Encoder(\"erd\");\nexport const decodeEgldAddress = createBech32Decoder(\"erd\");\nexport const egld = {\n name,\n coinType,\n encode: encodeEgldAddress,\n decode: decodeEgldAddress,\n};\n//# sourceMappingURL=egld.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"ela\";\nconst coinType = 2305;\nexport const encodeElaAddress = base58UncheckedEncode;\nexport const decodeElaAddress = base58UncheckedDecode;\nexport const ela = {\n name,\n coinType,\n encode: encodeElaAddress,\n decode: decodeElaAddress,\n};\n//# sourceMappingURL=ela.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"eos\";\nconst coinType = 194;\nconst prefix = \"EOS\";\nexport const encodeEosAddress = createEosEncoder(prefix);\nexport const decodeEosAddress = createEosDecoder(prefix);\nexport const eos = {\n name,\n coinType,\n encode: encodeEosAddress,\n decode: decodeEosAddress,\n};\n//# sourceMappingURL=eos.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"etcLegacy\";\nconst coinType = 61;\nexport const encodeEtcLegacyAddress = createHexChecksummedEncoder();\nexport const decodeEtcLegacyAddress = createHexChecksummedDecoder();\nexport const etcLegacy = {\n name,\n coinType,\n encode: encodeEtcLegacyAddress,\n decode: decodeEtcLegacyAddress,\n};\n//# sourceMappingURL=etcLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"eth\";\nconst coinType = 60;\nexport const encodeEthAddress = createHexChecksummedEncoder();\nexport const decodeEthAddress = createHexChecksummedDecoder();\nexport const eth = {\n name,\n coinType,\n encode: encodeEthAddress,\n decode: decodeEthAddress,\n};\n//# sourceMappingURL=eth.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nimport { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"etn\";\nconst coinType = 415;\nconst type = 18;\nconst etnChecksum = utils.checksum(4, keccak_256);\nexport const encodeEtnAddress = (source) => {\n const sourceWithType = concatBytes(new Uint8Array([type]), source);\n const checksummed = etnChecksum.encode(sourceWithType);\n return encodeXmrAddress(checksummed);\n};\nexport const decodeEtnAddress = (source) => {\n const decoded = decodeXmrAddress(source);\n if (decoded[0] !== 18)\n throw new Error(\"Unrecognised address format\");\n const checksummed = etnChecksum.decode(decoded);\n return checksummed.slice(1);\n};\nexport const etn = {\n name,\n coinType,\n encode: encodeEtnAddress,\n decode: decodeEtnAddress,\n};\n//# sourceMappingURL=etn.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"ewtLegacy\";\nconst coinType = 246;\nexport const encodeEwtLegacyAddress = createHexChecksummedEncoder();\nexport const decodeEwtLegacyAddress = createHexChecksummedDecoder();\nexport const ewtLegacy = {\n name,\n coinType,\n encode: encodeEwtLegacyAddress,\n decode: decodeEwtLegacyAddress,\n};\n//# sourceMappingURL=ewtLegacy.js.map","export const encodeLeb128 = (source) => {\n const bytes = [];\n do {\n let byte = Number(source & 127n);\n source >>= 7n;\n if (source != 0n) {\n byte = byte | 128;\n }\n bytes.push(byte);\n } while (source != 0n);\n return Uint8Array.from(bytes);\n};\nexport const decodeLeb128 = (source) => {\n let result = 0n;\n let shift = 0n;\n for (const byte of source) {\n result |= BigInt(byte & 127) << shift;\n if ((byte & 128) === 0)\n break;\n shift += 7n;\n }\n return result;\n};\n//# sourceMappingURL=leb128.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base32UnpaddedDecode, base32UnpaddedEncode } from \"../utils/base32.js\";\nimport { decodeLeb128, encodeLeb128 } from \"../utils/leb128.js\";\nconst name = \"fil\";\nconst coinType = 461;\nconst validateFilAddress = (address) => {\n if (address.length < 3)\n return false;\n if (address[0] !== \"f\")\n return false;\n if (address[1] === \"0\") {\n if (address.length > 22)\n return false;\n }\n else if (address[1] === \"1\" || address[1] === \"2\") {\n if (address.length !== 41)\n return false;\n }\n else if (address[1] === \"3\") {\n if (address.length !== 86)\n return false;\n }\n else {\n return false;\n }\n return true;\n};\nconst filChecksum = (source) => blake2b(source, { dkLen: 4 });\nexport const encodeFilAddress = (source) => {\n const payload = source.slice(1);\n const protocol = source[0];\n if (protocol === 0) {\n const decoded = decodeLeb128(payload);\n return `f${protocol}${decoded}`;\n }\n const checksum = blake2b(source, { dkLen: 4 });\n const bytes = concatBytes(payload, checksum);\n const decoded = base32UnpaddedEncode(bytes).toLowerCase();\n return `f${protocol}${decoded}`;\n};\nexport const decodeFilAddress = (source) => {\n if (!validateFilAddress(source))\n throw new Error(\"Unrecognised address format\");\n const protocol = parseInt(source[1], 10);\n const protocolByte = new Uint8Array([protocol]);\n const encoded = source.slice(2);\n if (protocol === 0) {\n return concatBytes(protocolByte, encodeLeb128(BigInt(encoded)));\n }\n const payloadWithChecksum = base32UnpaddedDecode(encoded.toUpperCase());\n const payload = payloadWithChecksum.slice(0, -4);\n const checksum = payloadWithChecksum.slice(-4);\n const decoded = concatBytes(protocolByte, payload);\n const newChecksum = filChecksum(decoded);\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const fil = {\n name,\n coinType,\n encode: encodeFilAddress,\n decode: decodeFilAddress,\n};\n//# sourceMappingURL=fil.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"fio\";\nconst coinType = 235;\nconst prefix = \"FIO\";\nexport const encodeFioAddress = createEosEncoder(prefix);\nexport const decodeFioAddress = createEosDecoder(prefix);\nexport const fio = {\n name,\n coinType,\n encode: encodeFioAddress,\n decode: decodeFioAddress,\n};\n//# sourceMappingURL=fio.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"firo\";\nconst coinType = 136;\nconst p2pkhVersions = [new Uint8Array([0x52])];\nconst p2shVersions = [new Uint8Array([0x07])];\nexport const encodeFiroAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeFiroAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const firo = {\n name,\n coinType,\n encode: encodeFiroAddress,\n decode: decodeFiroAddress,\n};\n//# sourceMappingURL=firo.js.map","// REF: https://github.com/ensdomains/address-encoder/pull/130#issuecomment-735935450\n// [n,k,d]-Linear code parameters\n// The linear code used in the account addressing is a [64,45,7]\n// It generates a [64,45]-code, which is the space of Flow account addresses.\n//\n// n is the size of the code words in bits,\n// which is also the size of the account addresses in bits.\nconst linearCodeN = 64;\n// Columns of the parity-check matrix H of the [64,45]-code used for Flow addresses.\n// H is a (n x p) matrix with coefficients in GF(2n, each column is converted into\n// a big endian integer representation of the GF(2) column vector.\n// H is used to verify a code word is a valid account address.\nconst parityCheckMatrixColumns = [\n 0x00001n,\n 0x00002n,\n 0x00004n,\n 0x00008n,\n 0x00010n,\n 0x00020n,\n 0x00040n,\n 0x00080n,\n 0x00100n,\n 0x00200n,\n 0x00400n,\n 0x00800n,\n 0x01000n,\n 0x02000n,\n 0x04000n,\n 0x08000n,\n 0x10000n,\n 0x20000n,\n 0x40000n,\n 0x7328dn,\n 0x6689an,\n 0x6112fn,\n 0x6084bn,\n 0x433fdn,\n 0x42aabn,\n 0x41951n,\n 0x233cen,\n 0x22a81n,\n 0x21948n,\n 0x1ef60n,\n 0x1decan,\n 0x1c639n,\n 0x1bdd8n,\n 0x1a535n,\n 0x194acn,\n 0x18c46n,\n 0x1632bn,\n 0x1529bn,\n 0x14a43n,\n 0x13184n,\n 0x12942n,\n 0x118c1n,\n 0x0f812n,\n 0x0e027n,\n 0x0d00en,\n 0x0c83cn,\n 0x0b01dn,\n 0x0a831n,\n 0x0982bn,\n 0x07034n,\n 0x0682an,\n 0x05819n,\n 0x03807n,\n 0x007d2n,\n 0x00727n,\n 0x0068en,\n 0x0067cn,\n 0x0059dn,\n 0x004ebn,\n 0x003b4n,\n 0x0036an,\n 0x002d9n,\n 0x001c7n,\n 0x0003fn,\n];\nexport function validateFlowAddress(address) {\n // Multiply the code word GF(2)-vector by the parity-check matrix\n let parity = 0n;\n for (let i = 0; i < linearCodeN; i++) {\n if ((address & 1n) === 1n) {\n parity = parity ^ parityCheckMatrixColumns[i];\n }\n address = address >> 1n;\n }\n return parity === 0n && address === 0n;\n}\n//# sourceMappingURL=flow.js.map","import { bytesToHex, hexWithoutPrefixToBytes } from \"../utils/bytes.js\";\nimport { validateFlowAddress } from \"../utils/flow.js\";\nconst name = \"flow\";\nconst coinType = 539;\nconst addressLength = 8;\nexport const encodeFlowAddress = (source) => {\n let bytes = new Uint8Array(addressLength);\n if (source.length > addressLength) {\n bytes.set(source.slice(source.length - addressLength));\n }\n else {\n bytes.set(source, addressLength - source.length);\n }\n return bytesToHex(bytes).toLowerCase();\n};\nexport const decodeFlowAddress = (source) => {\n if (!validateFlowAddress(BigInt(source)))\n throw new Error(\"Unrecognised address format\");\n return hexWithoutPrefixToBytes(source.startsWith(\"0x\") ? source.slice(2) : source);\n};\nexport const flow = {\n name,\n coinType,\n encode: encodeFlowAddress,\n decode: decodeFlowAddress,\n};\n//# sourceMappingURL=flow.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"./base58.js\";\nimport { createBech32Decoder, createBech32Encoder } from \"./bech32.js\";\n// changes from bitcoin.ts:\n// - no hrp suffix (hrp + \"1\")\n// - no segwit\nexport const createZcashDecoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const decodeBech32 = createBech32Decoder(hrp);\n const decodeBase58 = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\n return (source) => {\n if (source.toLowerCase().startsWith(hrp)) {\n return decodeBech32(source);\n }\n return decodeBase58(source);\n };\n};\nexport const createZcashEncoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const encodeBech32 = createBech32Encoder(hrp);\n const encodeBase58 = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\n return (source) => {\n try {\n return encodeBase58(source);\n }\n catch {\n return encodeBech32(source);\n }\n };\n};\n//# sourceMappingURL=zcash.js.map","import { createZcashDecoder, createZcashEncoder } from \"../utils/zcash.js\";\nconst name = \"flux\";\nconst coinType = 19167;\nconst hrp = \"za\";\nconst p2pkhVersions = [new Uint8Array([0x1c, 0xb8])];\nconst p2shVersions = [new Uint8Array([0x1c, 0xbd])];\nexport const encodeFluxAddress = createZcashEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeFluxAddress = createZcashDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const flux = {\n name,\n coinType,\n encode: encodeFluxAddress,\n decode: decodeFluxAddress,\n};\n//# sourceMappingURL=flux.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"ftmLegacy\";\nconst coinType = 1007;\nexport const encodeFtmLegacyAddress = createHexChecksummedEncoder();\nexport const decodeFtmLegacyAddress = createHexChecksummedDecoder();\nexport const ftmLegacy = {\n name,\n coinType,\n encode: encodeFtmLegacyAddress,\n decode: decodeFtmLegacyAddress,\n};\n//# sourceMappingURL=ftmLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"gnoLegacy\";\nconst coinType = 700;\nexport const encodeGnoLegacyAddress = createHexChecksummedEncoder();\nexport const decodeGnoLegacyAddress = createHexChecksummedDecoder();\nexport const gnoLegacy = {\n name,\n coinType,\n encode: encodeGnoLegacyAddress,\n decode: decodeGnoLegacyAddress,\n};\n//# sourceMappingURL=gnoLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"goLegacy\";\nconst coinType = 6060;\nexport const encodeGoLegacyAddress = createHexChecksummedEncoder();\nexport const decodeGoLegacyAddress = createHexChecksummedDecoder();\nexport const goLegacy = {\n name,\n coinType,\n encode: encodeGoLegacyAddress,\n decode: decodeGoLegacyAddress,\n};\n//# sourceMappingURL=goLegacy.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"grin\";\nconst coinType = 592;\nconst hrp = \"grin\";\nexport const encodeGrinAddress = createBech32Encoder(hrp);\nexport const decodeGrinAddress = createBech32Decoder(hrp);\nexport const grin = {\n name,\n coinType,\n encode: encodeGrinAddress,\n decode: decodeGrinAddress,\n};\n//# sourceMappingURL=grin.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"gxc\";\nconst coinType = 2303;\nconst prefix = \"GXC\";\nexport const encodeGxcAddress = createEosEncoder(prefix);\nexport const decodeGxcAddress = createEosDecoder(prefix);\nexport const gxc = {\n name,\n coinType,\n encode: encodeGxcAddress,\n decode: decodeGxcAddress,\n};\n//# sourceMappingURL=gxc.js.map","const name = \"hbar\";\nconst coinType = 3030;\nexport const encodeHbarAddress = (source) => {\n if (source.length !== 20)\n throw new Error(\"Unrecognised address format\");\n const view = new DataView(source.buffer, 0, 20);\n const shard = view.getUint32(0);\n const realm = view.getBigUint64(4);\n const account = view.getBigUint64(12, false);\n return [shard, realm, account].join(\".\");\n};\nexport const decodeHbarAddress = (source) => {\n const view = new DataView(new ArrayBuffer(20), 0, 20);\n const components = source.split(\".\");\n if (components.length !== 3)\n throw new Error(\"Unrecognised address format\");\n const shard = Number(components[0]);\n const realm = BigInt(components[1]);\n const account = BigInt(components[2]);\n view.setUint32(0, shard);\n view.setBigUint64(4, realm);\n view.setBigUint64(12, account);\n return new Uint8Array(view.buffer, 0, 20);\n};\nexport const hbar = {\n name,\n coinType,\n encode: encodeHbarAddress,\n decode: decodeHbarAddress,\n};\n//# sourceMappingURL=hbar.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"hive\";\nconst coinType = 825;\nconst prefix = \"STM\";\nexport const encodeHiveAddress = createEosEncoder(prefix);\nexport const decodeHiveAddress = createEosDecoder(prefix);\nexport const hive = {\n name,\n coinType,\n encode: encodeHiveAddress,\n decode: decodeHiveAddress,\n};\n//# sourceMappingURL=hive.js.map","import { bech32 } from \"@scure/base\";\nconst name = \"hns\";\nconst coinType = 5353;\nconst hrp = \"hs\";\nconst versionBytes = new Uint8Array([0x00]);\nexport const encodeHnsAddress = (source) => {\n if (source.length !== 20)\n throw new Error(\"Unrecognised address format\");\n return bech32.encode(hrp, [versionBytes[0], ...bech32.toWords(source)]);\n};\nexport const decodeHnsAddress = (source) => {\n const { prefix, words } = bech32.decode(source);\n if (prefix !== hrp)\n throw new Error(\"Unrecognised address format\");\n const version = words[0];\n const bytes = bech32.fromWords(words.slice(1));\n if (version !== versionBytes[0])\n throw new Error(\"Unrecognised address format\");\n if (bytes.length !== 20)\n throw new Error(\"Unrecognised address format\");\n return new Uint8Array(bytes);\n};\nexport const hns = {\n name,\n coinType,\n encode: encodeHnsAddress,\n decode: decodeHnsAddress,\n};\n//# sourceMappingURL=hns.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"hnt\";\nconst coinType = 904;\nexport const encodeHntAddress = (source) => {\n const sourceWithVersion = concatBytes(new Uint8Array([0x00]), source);\n return base58CheckEncode(sourceWithVersion);\n};\nexport const decodeHntAddress = (source) => {\n const decoded = base58CheckDecode(source);\n const version = decoded[0];\n if (version !== 0)\n throw new Error(\"Unrecognised address format\");\n return decoded.slice(1);\n};\nexport const hnt = {\n name,\n coinType,\n encode: encodeHntAddress,\n decode: decodeHntAddress,\n};\n//# sourceMappingURL=hnt.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { bytesToHexWithoutPrefix, hexWithoutPrefixToBytes, } from \"../utils/bytes.js\";\nconst name = \"icx\";\nconst coinType = 74;\nexport const encodeIcxAddress = (source) => {\n if (source.length !== 21)\n throw new Error(\"Invalid address length\");\n const type = source[0];\n if (type === 0x00)\n return `hx${bytesToHexWithoutPrefix(source.slice(1))}`;\n if (type === 0x01)\n return `cx${bytesToHexWithoutPrefix(source.slice(1))}`;\n throw new Error(\"Invalid address type\");\n};\nexport const decodeIcxAddress = (source) => {\n const prefix = source.slice(0, 2);\n const body = source.slice(2);\n if (prefix === \"hx\")\n return concatBytes(new Uint8Array([0x00]), hexWithoutPrefixToBytes(body));\n if (prefix === \"cx\")\n return concatBytes(new Uint8Array([0x01]), hexWithoutPrefixToBytes(body));\n throw new Error(\"Invalid address prefix\");\n};\nexport const icx = {\n name,\n coinType,\n encode: encodeIcxAddress,\n decode: decodeIcxAddress,\n};\n//# sourceMappingURL=icx.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"iost\";\nconst coinType = 291;\nexport const encodeIostAddress = base58UncheckedEncode;\nexport const decodeIostAddress = base58UncheckedDecode;\nexport const iost = {\n name,\n coinType,\n encode: encodeIostAddress,\n decode: decodeIostAddress,\n};\n//# sourceMappingURL=iost.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"iota\";\nconst coinType = 4218;\nconst hrp = \"iota\";\nconst version = new Uint8Array([0x00]);\nconst iotaBech32Encode = createBech32Encoder(hrp);\nconst iotaBech32Decode = createBech32Decoder(hrp);\nexport const encodeIotaAddress = (source) => {\n return iotaBech32Encode(concatBytes(version, source));\n};\nexport const decodeIotaAddress = (source) => {\n const decoded = iotaBech32Decode(source);\n return decoded.slice(1);\n};\nexport const iota = {\n name,\n coinType,\n encode: encodeIotaAddress,\n decode: decodeIotaAddress,\n};\n//# sourceMappingURL=iota.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"iotx\";\nconst coinType = 304;\nconst hrp = \"io\";\nexport const encodeIotxAddress = createBech32Encoder(hrp);\nexport const decodeIotxAddress = createBech32Decoder(hrp);\nexport const iotx = {\n name,\n coinType,\n encode: encodeIotxAddress,\n decode: decodeIotxAddress,\n};\n//# sourceMappingURL=iotx.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"iris\";\nconst coinType = 566;\nconst hrp = \"iaa\";\nexport const encodeIrisAddress = createBech32Encoder(hrp);\nexport const decodeIrisAddress = createBech32Decoder(hrp);\nexport const iris = {\n name,\n coinType,\n encode: encodeIrisAddress,\n decode: decodeIrisAddress,\n};\n//# sourceMappingURL=iris.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"kava\";\nconst coinType = 459;\nconst hrp = \"kava\";\nexport const encodeKavaAddress = createBech32Encoder(hrp);\nexport const decodeKavaAddress = createBech32Decoder(hrp);\nexport const kava = {\n name,\n coinType,\n encode: encodeKavaAddress,\n decode: decodeKavaAddress,\n};\n//# sourceMappingURL=kava.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"kmd\";\nconst coinType = 141;\nconst p2pkhVersions = [new Uint8Array([0x3c])];\nconst p2shVersions = [new Uint8Array([0x55])];\nexport const encodeKmdAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeKmdAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const kmd = {\n name,\n coinType,\n encode: encodeKmdAddress,\n decode: decodeKmdAddress,\n};\n//# sourceMappingURL=kmd.js.map","import { createDotAddressDecoder, createDotAddressEncoder, } from \"../utils/dot.js\";\nconst name = \"ksm\";\nconst coinType = 434;\nconst dotType = 2;\nexport const encodeKsmAddress = createDotAddressEncoder(dotType);\nexport const decodeKsmAddress = createDotAddressDecoder(dotType);\nexport const ksm = {\n name,\n coinType,\n encode: encodeKsmAddress,\n decode: decodeKsmAddress,\n};\n//# sourceMappingURL=ksm.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"lcc\";\nconst coinType = 192;\nconst hrp = \"lcc\";\nconst p2pkhVersions = [new Uint8Array([0x1c])];\nconst p2shVersions = [new Uint8Array([0x32]), new Uint8Array([0x05])];\nexport const encodeLccAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeLccAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const lcc = {\n name,\n coinType,\n encode: encodeLccAddress,\n decode: decodeLccAddress,\n};\n//# sourceMappingURL=lcc.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"lrg\";\nconst coinType = 568;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x0d])];\nexport const encodeLrgAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeLrgAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const lrg = {\n name,\n coinType,\n encode: encodeLrgAddress,\n decode: decodeLrgAddress,\n};\n//# sourceMappingURL=lrg.js.map","import { base10ToBytes, bytesToBase10 } from \"../utils/bytes.js\";\nconst name = \"lsk\";\nconst coinType = 134;\nexport const encodeLskAddress = (source) => {\n return `${bytesToBase10(source)}L`;\n};\nexport const decodeLskAddress = (source) => {\n if (source.length < 2 || source.length > 22)\n throw new Error(\"Invalid address length\");\n if (!source.endsWith(\"L\") || source.includes(\".\"))\n throw new Error(\"Invalid address format\");\n return base10ToBytes(source.slice(0, -1));\n};\nexport const lsk = {\n name,\n coinType,\n encode: encodeLskAddress,\n decode: decodeLskAddress,\n};\n//# sourceMappingURL=lsk.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"ltc\";\nconst coinType = 2;\nconst hrp = \"ltc\";\nconst p2pkhVersions = [new Uint8Array([0x30])];\nconst p2shVersions = [new Uint8Array([0x32]), new Uint8Array([0x05])];\nexport const encodeLtcAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeLtcAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const ltc = {\n name,\n coinType,\n encode: encodeLtcAddress,\n decode: decodeLtcAddress,\n};\n//# sourceMappingURL=ltc.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"luna\";\nconst coinType = 330;\nconst hrp = \"terra\";\nexport const encodeLunaAddress = createBech32Encoder(hrp);\nexport const decodeLunaAddress = createBech32Decoder(hrp);\nexport const luna = {\n name,\n coinType,\n encode: encodeLunaAddress,\n decode: decodeLunaAddress,\n};\n//# sourceMappingURL=luna.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"mona\";\nconst coinType = 22;\nconst hrp = \"mona\";\nconst p2pkhVersions = [new Uint8Array([0x32])];\nconst p2shVersions = [new Uint8Array([0x37]), new Uint8Array([0x05])];\nexport const encodeMonaAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeMonaAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const mona = {\n name,\n coinType,\n encode: encodeMonaAddress,\n decode: decodeMonaAddress,\n};\n//# sourceMappingURL=mona.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"mrx\";\nconst coinType = 326;\nexport const encodeMrxAddress = base58CheckEncode;\nexport const decodeMrxAddress = base58CheckDecode;\nexport const mrx = {\n name,\n coinType,\n encode: encodeMrxAddress,\n decode: decodeMrxAddress,\n};\n//# sourceMappingURL=mrx.js.map","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { utils } from \"@scure/base\";\nconst name = \"nano\";\nconst coinType = 165;\nconst convertRadixNano = (data, from, to) => {\n const leftover = (data.length * from) % to;\n const offset = leftover === 0 ? 0 : to - leftover;\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (let i = 0; i < data.length; i++) {\n const n = data[i];\n if (n >= 2 ** from)\n throw new Error(`convertRadixNano: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadixNano: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to) {\n res.push((carry >>> (pos + offset - to)) & mask);\n }\n }\n carry = (carry << (to - (pos + offset))) & mask;\n if (pos > 0)\n res.push(carry >>> 0);\n return res;\n};\nconst radixNano = {\n encode: (source) => convertRadixNano(source, 8, 5),\n decode: (source) => {\n const leftover = (source.length * 5) % 8;\n let result = convertRadixNano(source, 5, 8);\n if (leftover !== 0)\n result = result.slice(1);\n return Uint8Array.from(result);\n },\n};\nconst base32Nano = utils.chain(radixNano, utils.alphabet(\"13456789abcdefghijkmnopqrstuwxyz\"), utils.join(\"\"));\nexport const encodeNanoAddress = (source) => {\n const encoded = base32Nano.encode(source);\n const checksum = blake2b(source, { dkLen: 5 }).reverse();\n const checksumEncoded = base32Nano.encode(checksum);\n return `nano_${encoded}${checksumEncoded}`;\n};\nexport const decodeNanoAddress = (source) => {\n const decoded = base32Nano.decode(source.slice(5));\n return Uint8Array.from(decoded.slice(0, -5));\n};\nexport const nano = {\n name,\n coinType,\n encode: encodeNanoAddress,\n decode: decodeNanoAddress,\n};\n//# sourceMappingURL=nano.js.map","import { sha3_256 } from \"@noble/hashes/sha3\";\nimport { utils } from \"@scure/base\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"nas\";\nconst coinType = 2718;\nconst nasChecksum = utils.checksum(4, sha3_256);\nexport const encodeNasAddress = (source) => {\n const checksummed = nasChecksum.encode(source);\n return base58UncheckedEncode(checksummed);\n};\nexport const decodeNasAddress = (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded.length !== 26 ||\n decoded[0] !== 25 ||\n (decoded[1] !== 87 && decoded[1] !== 88))\n throw new Error(\"Unrecognised address format\");\n return nasChecksum.decode(decoded);\n};\nexport const nas = {\n name,\n coinType,\n encode: encodeNasAddress,\n decode: decodeNasAddress,\n};\n//# sourceMappingURL=nas.js.map","const nearAddressRegex = /^(([a-z\\d]+[\\-_])*[a-z\\d]+\\.)*([a-z\\d]+[\\-_])*[a-z\\d]+$/;\nexport const validateNearAddress = (address) => {\n if (address.length < 2 || address.length > 64)\n return false;\n if (!nearAddressRegex.test(address))\n return false;\n return true;\n};\n//# sourceMappingURL=near.js.map","import { bytesToString, stringToBytes } from \"../utils/bytes.js\";\nimport { validateNearAddress } from \"../utils/near.js\";\nconst name = \"near\";\nconst coinType = 397;\nexport const encodeNearAddress = (source) => {\n const encoded = bytesToString(source);\n if (!validateNearAddress(encoded))\n throw new Error(\"Unrecognised address format\");\n return encoded;\n};\nexport const decodeNearAddress = (source) => {\n if (!validateNearAddress(source))\n throw new Error(\"Unrecognised address format\");\n return stringToBytes(source);\n};\nexport const near = {\n name,\n coinType,\n encode: encodeNearAddress,\n decode: decodeNearAddress,\n};\n//# sourceMappingURL=near.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"neo\";\nconst coinType = 888;\nexport const encodeNeoAddress = base58CheckEncode;\nexport const decodeNeoAddress = base58CheckDecode;\nexport const neo = {\n name,\n coinType,\n encode: encodeNeoAddress,\n decode: decodeNeoAddress,\n};\n//# sourceMappingURL=neo.js.map","import { utils } from \"@scure/base\";\nconst name = \"nim\";\nconst coinType = 242;\nconst CCODE = \"NQ\";\nconst ibanCheck = (data) => {\n const num = data\n .toUpperCase()\n .split(\"\")\n .map((c) => {\n const code = c.charCodeAt(0);\n if (code >= 48 && code <= 57) {\n return c;\n }\n else {\n return (code - 55).toString();\n }\n })\n .join(\"\");\n let tmp = \"\";\n for (let i = 0; i < Math.ceil(num.length / 6); i++) {\n const a = num.slice(i * 6, i * 6 + 6);\n tmp = (parseInt(tmp + a, 10) % 97).toString();\n }\n return parseInt(tmp, 10);\n};\nconst nimChecksum = (source) => {\n return (\"00\" + (98 - ibanCheck(source + CCODE + \"00\"))).slice(-2);\n};\nconst base32Nim = utils.chain(utils.radix2(5), utils.alphabet(\"0123456789ABCDEFGHJKLMNPQRSTUVXY\"), utils.padding(5), utils.join(\"\"));\nexport const encodeNimAddress = (source) => {\n const base32Part = base32Nim.encode(source);\n const checksummed = nimChecksum(base32Part);\n return `${CCODE}${checksummed}${base32Part}`.replace(/.{4}/g, \"$& \").trim();\n};\nexport const decodeNimAddress = (source) => {\n if (!source.startsWith(CCODE))\n throw new Error(\"Unrecognised address format\");\n const noWhitespace = source.replace(/ /g, \"\");\n const checksum = noWhitespace.slice(2, 4);\n const base32Part = noWhitespace.slice(4);\n if (checksum !== nimChecksum(base32Part))\n throw new Error(\"Unrecognised address format\");\n return base32Nim.decode(base32Part);\n};\nexport const nim = {\n name,\n coinType,\n encode: encodeNimAddress,\n decode: decodeNimAddress,\n};\n//# sourceMappingURL=nim.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"nmc\";\nconst coinType = 7;\nexport const encodeNmcAddress = base58CheckEncode;\nexport const decodeNmcAddress = base58CheckDecode;\nexport const nmc = {\n name,\n coinType,\n encode: encodeNmcAddress,\n decode: decodeNmcAddress,\n};\n//# sourceMappingURL=nmc.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"nostr\";\nconst coinType = 1237;\nconst hrp = \"npub\";\nexport const encodeNostrAddress = createBech32Encoder(hrp);\nexport const decodeNostrAddress = createBech32Decoder(hrp);\nexport const nostr = {\n name,\n coinType,\n encode: encodeNostrAddress,\n decode: decodeNostrAddress,\n};\n//# sourceMappingURL=nostr.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"nrgLegacy\";\nconst coinType = 9797;\nexport const encodeNrgLegacyAddress = createHexChecksummedEncoder();\nexport const decodeNrgLegacyAddress = createHexChecksummedDecoder();\nexport const nrgLegacy = {\n name,\n coinType,\n encode: encodeNrgLegacyAddress,\n decode: decodeNrgLegacyAddress,\n};\n//# sourceMappingURL=nrgLegacy.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"nuls\";\nconst coinType = 8964;\nconst prefixReference = [\"a\", \"b\", \"c\", \"d\", \"e\"];\nconst decodePrefix = (source) => {\n for (let i = 0; i < source.length; i++) {\n const value = source.charCodeAt(i);\n if (value >= 97) {\n return source.slice(i + 1);\n }\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const encodeNulsAddress = (source) => {\n const chainId = (source[0] & 0xff) | ((source[1] & 0xff) << 8);\n const payload = new Uint8Array(source.length + 1);\n let xor = 0x00;\n for (let i = 0; i < source.length; i++) {\n const byte = source[i];\n const value = byte > 127 ? byte - 256 : byte;\n payload[i] = value;\n xor ^= value;\n }\n payload[source.length] = xor;\n let prefix;\n if (chainId === 1)\n prefix = \"NULS\";\n else if (chainId === 2)\n prefix = \"tNULS\";\n else {\n const chainIdBytes = concatBytes(new Uint8Array([0xff & (chainId >> 0)]), new Uint8Array([0xff & (chainId >> 8)]));\n prefix = base58UncheckedEncode(chainIdBytes).toUpperCase();\n }\n return (prefix + prefixReference[prefix.length - 1] + base58UncheckedEncode(payload));\n};\nexport const decodeNulsAddress = (source) => {\n let sourceWithoutPrefix;\n if (source.startsWith(\"NULS\"))\n sourceWithoutPrefix = source.slice(5);\n else if (source.startsWith(\"tNULS\"))\n sourceWithoutPrefix = source.slice(6);\n else\n sourceWithoutPrefix = decodePrefix(source);\n const payload = base58UncheckedDecode(sourceWithoutPrefix);\n let xor = 0x00;\n for (let i = 0; i < payload.length - 1; i++) {\n const byte = payload[i];\n const value = byte > 127 ? byte - 256 : byte;\n payload[i] = value;\n xor ^= value;\n }\n if (xor < 0)\n xor += 256;\n if (xor !== payload[payload.length - 1])\n throw new Error(\"Unrecognised address format\");\n return payload.slice(0, -1);\n};\nexport const nuls = {\n name,\n coinType,\n encode: encodeNulsAddress,\n decode: decodeNulsAddress,\n};\n//# sourceMappingURL=nuls.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"one\";\nconst coinType = 1023;\nconst hrp = \"one\";\nexport const encodeOneAddress = createBech32Encoder(hrp);\nexport const decodeOneAddress = createBech32Decoder(hrp);\nexport const one = {\n name,\n coinType,\n encode: encodeOneAddress,\n decode: decodeOneAddress,\n};\n//# sourceMappingURL=one.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"ont\";\nconst coinType = 1024;\nexport const encodeOntAddress = (source) => {\n const sourceWithVersion = concatBytes(new Uint8Array([0x17]), source);\n return base58CheckEncode(sourceWithVersion);\n};\nexport const decodeOntAddress = (source) => {\n const decoded = base58CheckDecode(source);\n const version = decoded[0];\n if (version !== 0x17)\n throw new Error(\"Unrecognised address format\");\n return decoded.slice(1);\n};\nexport const ont = {\n name,\n coinType,\n encode: encodeOntAddress,\n decode: decodeOntAddress,\n};\n//# sourceMappingURL=ont.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"poaLegacy\";\nconst coinType = 178;\nexport const encodePoaLegacyAddress = createHexChecksummedEncoder();\nexport const decodePoaLegacyAddress = createHexChecksummedDecoder();\nexport const poaLegacy = {\n name,\n coinType,\n encode: encodePoaLegacyAddress,\n decode: decodePoaLegacyAddress,\n};\n//# sourceMappingURL=poaLegacy.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"ppc\";\nconst coinType = 6;\nconst p2pkhVersions = [new Uint8Array([0x37])];\nconst p2shVersions = [new Uint8Array([0x75])];\nexport const encodePpcAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodePpcAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const ppc = {\n name,\n coinType,\n encode: encodePpcAddress,\n decode: decodePpcAddress,\n};\n//# sourceMappingURL=ppc.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"qtum\";\nconst coinType = 2301;\nexport const encodeQtumAddress = base58CheckEncode;\nexport const decodeQtumAddress = base58CheckDecode;\nexport const qtum = {\n name,\n coinType,\n encode: encodeQtumAddress,\n decode: decodeQtumAddress,\n};\n//# sourceMappingURL=qtum.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"rbtc\";\nconst coinType = 137;\nconst chainId = 30;\nexport const encodeRbtcAddress = createHexChecksummedEncoder(chainId);\nexport const decodeRbtcAddress = createHexChecksummedDecoder(chainId);\nexport const rbtc = {\n name,\n coinType,\n encode: encodeRbtcAddress,\n decode: decodeRbtcAddress,\n};\n//# sourceMappingURL=rbtc.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"rdd\";\nconst coinType = 4;\nconst p2pkhVersions = [new Uint8Array([0x3d])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeRddAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeRddAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const rdd = {\n name,\n coinType,\n encode: encodeRddAddress,\n decode: decodeRddAddress,\n};\n//# sourceMappingURL=rdd.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"rune\";\nconst coinType = 931;\nconst hrp = \"thor\";\nexport const encodeRuneAddress = createBech32Encoder(hrp);\nexport const decodeRuneAddress = createBech32Decoder(hrp);\nexport const rune = {\n name,\n coinType,\n encode: encodeRuneAddress,\n decode: decodeRuneAddress,\n};\n//# sourceMappingURL=rune.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"rvn\";\nconst coinType = 175;\nconst p2pkhVersions = [new Uint8Array([0x3c])];\nconst p2shVersions = [new Uint8Array([0x7a])];\nexport const encodeRvnAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeRvnAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const rvn = {\n name,\n coinType,\n encode: encodeRvnAddress,\n decode: decodeRvnAddress,\n};\n//# sourceMappingURL=rvn.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { bytesToHexWithoutPrefix, hexWithoutPrefixToBytes, } from \"../utils/bytes.js\";\nconst name = \"sc\";\nconst coinType = 1991;\nconst length = 32;\nconst checksumLength = 6;\nconst scChecksum = (source) => blake2b(source, { dkLen: length }).slice(0, checksumLength);\nexport const encodeScAddress = (source) => {\n const checksum = scChecksum(source);\n return bytesToHexWithoutPrefix(concatBytes(source, checksum));\n};\nexport const decodeScAddress = (source) => {\n if (source.length !== 76)\n throw new Error(\"Unrecognised address format\");\n const decoded = hexWithoutPrefixToBytes(source);\n const payload = decoded.slice(0, -checksumLength);\n const checksum = decoded.slice(-checksumLength);\n const newChecksum = scChecksum(payload);\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return payload;\n};\nexport const sc = {\n name,\n coinType,\n encode: encodeScAddress,\n decode: decodeScAddress,\n};\n//# sourceMappingURL=sc.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"sero\";\nconst coinType = 569;\nexport const encodeSeroAddress = base58UncheckedEncode;\nexport const decodeSeroAddress = (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded.length !== 96)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const sero = {\n name,\n coinType,\n encode: encodeSeroAddress,\n decode: decodeSeroAddress,\n};\n//# sourceMappingURL=sero.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"sol\";\nconst coinType = 501;\nexport const encodeSolAddress = (source) => {\n if (source.length !== 32)\n throw new Error(\"Unrecognised address format\");\n const encoded = base58UncheckedEncode(source);\n if (encoded.length < 32 || encoded.length > 44)\n throw new Error(\"Unrecognised address format\");\n return encoded;\n};\nexport const decodeSolAddress = (source) => {\n if (source.length < 32 || source.length > 44)\n throw new Error(\"Unrecognised address format\");\n const decoded = base58UncheckedDecode(source);\n if (decoded.length !== 32)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const sol = {\n name,\n coinType,\n encode: encodeSolAddress,\n decode: decodeSolAddress,\n};\n//# sourceMappingURL=sol.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"srm\";\nconst coinType = 573;\nexport const encodeSrmAddress = base58UncheckedEncode;\nexport const decodeSrmAddress = base58UncheckedDecode;\nexport const srm = {\n name,\n coinType,\n encode: encodeSrmAddress,\n decode: decodeSrmAddress,\n};\n//# sourceMappingURL=srm.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"steem\";\nconst coinType = 135;\nconst prefix = \"STM\";\nexport const encodeSteemAddress = createEosEncoder(prefix);\nexport const decodeSteemAddress = createEosDecoder(prefix);\nexport const steem = {\n name,\n coinType,\n encode: encodeSteemAddress,\n decode: decodeSteemAddress,\n};\n//# sourceMappingURL=steem.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"strat\";\nconst coinType = 105;\nconst p2pkhVersions = [new Uint8Array([0x3f])];\nconst p2shVersions = [new Uint8Array([0x7d])];\nexport const encodeStratAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeStratAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const strat = {\n name,\n coinType,\n encode: encodeStratAddress,\n decode: decodeStratAddress,\n};\n//# sourceMappingURL=strat.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { bytesToHexWithoutPrefix, hexToBytes, } from \"../utils/bytes.js\";\nimport { rawChecksumAddress } from \"../utils/hex.js\";\nconst name = \"strk\";\nconst coinType = 9004;\nconst addressLength = 32;\nconst addressRegex = /^0x[a-fA-F0-9]{64}$/;\nconst strkChecksum = (source) => {\n const chars = bytesToHexWithoutPrefix(source).toLowerCase().split(\"\");\n const sourceLeadingZeroIndex = source.findIndex((byte) => byte !== 0x00);\n const leadingZeroStripped = sourceLeadingZeroIndex > 0 ? source.slice(sourceLeadingZeroIndex) : source;\n const hash = new Uint8Array(32);\n hash.set(keccak_256(leadingZeroStripped), sourceLeadingZeroIndex);\n return rawChecksumAddress({ address: chars, hash, length: 64 });\n};\nexport const encodeStrkAddress = (source) => {\n if (source.length !== addressLength)\n throw new Error(\"Unrecognised address format\");\n return strkChecksum(source);\n};\nexport const decodeStrkAddress = (source) => {\n if (!addressRegex.test(source))\n throw new Error(\"Unrecognised address format\");\n const decoded = hexToBytes(source);\n if (strkChecksum(decoded) !== source)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const strk = {\n name,\n coinType,\n encode: encodeStrkAddress,\n decode: decodeStrkAddress,\n};\n//# sourceMappingURL=strk.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nimport { base32CrockfordNormalise } from \"../utils/base32.js\";\nconst name = \"stx\";\nconst coinType = 5757;\nconst prefix = \"S\";\nconst length = 20;\nconst checkumLength = 4;\nconst p2pkhVersion = new Uint8Array([22]);\nconst p2shVersion = new Uint8Array([20]);\nconst radixStx = {\n encode: (source) => convertRadixStx(source, 8, 5, true),\n decode: (source) => Uint8Array.from(convertRadixStx(source, 5, 8, false)),\n};\nconst convertRadixStx = (data, from, to, padding) => {\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data.reverse()) {\n carry = (n << pos) | carry;\n pos += from;\n let i = 0;\n for (; pos >= to; pos -= to) {\n const v = ((carry >> (to * i)) & mask) >>> 0;\n res.unshift(v);\n i += 1;\n }\n carry = carry >> (to * i);\n }\n if (!padding && pos >= from)\n throw new Error(\"Excess padding\");\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.unshift(carry >>> 0);\n return res;\n};\nconst base32Stx = utils.chain(radixStx, utils.alphabet(\"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"), utils.join(\"\"));\nconst stxChecksum = (data) => sha256(sha256(data)).slice(0, checkumLength);\nexport const encodeStxAddress = (source) => {\n if (source.length !== length + checkumLength)\n throw new Error(\"Unrecognised address format\");\n const hash160 = source.slice(0, length);\n const checksum = source.slice(-checkumLength);\n let version;\n let encoded;\n if (equalBytes(checksum, stxChecksum(concatBytes(p2pkhVersion, hash160)))) {\n version = \"P\";\n encoded = base32Stx.encode(source);\n }\n else if (equalBytes(checksum, stxChecksum(concatBytes(p2shVersion, hash160)))) {\n version = \"M\";\n encoded = base32Stx.encode(source);\n }\n else\n throw new Error(\"Unrecognised address format\");\n return `${prefix}${version}${encoded}`;\n};\nexport const decodeStxAddress = (source) => {\n if (source.length < 6)\n throw new Error(\"Unrecognised address format\");\n if (source[0] !== \"S\")\n throw new Error(\"Unrecognised address format\");\n const normalised = base32CrockfordNormalise(source);\n const version = normalised[1];\n let versionBytes;\n if (version === \"P\")\n versionBytes = p2pkhVersion;\n else if (version === \"M\")\n versionBytes = p2shVersion;\n else\n throw new Error(\"Unrecognised address format\");\n const payload = base32Stx.decode(normalised.slice(2));\n const decoded = payload.slice(0, -checkumLength);\n const checksum = payload.slice(-checkumLength);\n const newChecksum = stxChecksum(concatBytes(versionBytes, decoded));\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return payload;\n};\nexport const stx = {\n name,\n coinType,\n encode: encodeStxAddress,\n decode: decodeStxAddress,\n};\n//# sourceMappingURL=stx.js.map","import { bytesToHex, hexToBytes, } from \"../utils/bytes.js\";\nimport { stripHexPrefix } from \"../utils/hex.js\";\nconst name = \"sui\";\nconst coinType = 784;\nexport const encodeSuiAddress = (source) => {\n if (source.length !== 32)\n throw new Error(\"Unrecognised address format\");\n const encoded = bytesToHex(source);\n return encoded.toLowerCase();\n};\nexport const decodeSuiAddress = (source) => {\n const stripped = stripHexPrefix(source);\n // Check if the address has the correct format (64 hex chars)\n if (!/^0x[a-fA-F0-9]{64}$/.test(source) && !/^[a-fA-F0-9]{64}$/.test(stripped)) {\n throw new Error(\"Unrecognised address format\");\n }\n const decoded = hexToBytes(`0x${stripped}`);\n if (decoded.length !== 32)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const sui = {\n name,\n coinType,\n encode: encodeSuiAddress,\n decode: decodeSuiAddress,\n};\n//# sourceMappingURL=sui.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"sys\";\nconst coinType = 57;\nconst hrp = \"sys\";\nconst p2pkhVersions = [new Uint8Array([0x3f])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeSysAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeSysAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const sys = {\n name,\n coinType,\n encode: encodeSysAddress,\n decode: decodeSysAddress,\n};\n//# sourceMappingURL=sys.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"tfuel\";\nconst coinType = 589;\nexport const encodeTfuelAddress = createHexChecksummedEncoder();\nexport const decodeTfuelAddress = createHexChecksummedDecoder();\nexport const tfuel = {\n name,\n coinType,\n encode: encodeTfuelAddress,\n decode: decodeTfuelAddress,\n};\n//# sourceMappingURL=tfuel.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"thetaLegacy\";\nconst coinType = 500;\nexport const encodeThetaLegacyAddress = createHexChecksummedEncoder();\nexport const decodeThetaLegacyAddress = createHexChecksummedDecoder();\nexport const thetaLegacy = {\n name,\n coinType,\n encode: encodeThetaLegacyAddress,\n decode: decodeThetaLegacyAddress,\n};\n//# sourceMappingURL=thetaLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"tomoLegacy\";\nconst coinType = 889;\nexport const encodeTomoLegacyAddress = createHexChecksummedEncoder();\nexport const decodeTomoLegacyAddress = createHexChecksummedDecoder();\nexport const tomoLegacy = {\n name,\n coinType,\n encode: encodeTomoLegacyAddress,\n decode: decodeTomoLegacyAddress,\n};\n//# sourceMappingURL=tomoLegacy.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"trx\";\nconst coinType = 195;\nexport const encodeTrxAddress = base58CheckEncode;\nexport const decodeTrxAddress = base58CheckDecode;\nexport const trx = {\n name,\n coinType,\n encode: encodeTrxAddress,\n decode: decodeTrxAddress,\n};\n//# sourceMappingURL=trx.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"ttLegacy\";\nconst coinType = 1001;\nexport const encodeTtLegacyAddress = createHexChecksummedEncoder();\nexport const decodeTtLegacyAddress = createHexChecksummedDecoder();\nexport const ttLegacy = {\n name,\n coinType,\n encode: encodeTtLegacyAddress,\n decode: decodeTtLegacyAddress,\n};\n//# sourceMappingURL=ttLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"vet\";\nconst coinType = 818;\nexport const encodeVetAddress = createHexChecksummedEncoder();\nexport const decodeVetAddress = createHexChecksummedDecoder();\nexport const vet = {\n name,\n coinType,\n encode: encodeVetAddress,\n decode: decodeVetAddress,\n};\n//# sourceMappingURL=vet.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"via\";\nconst coinType = 14;\nconst p2pkhVersions = [new Uint8Array([0x47])];\nconst p2shVersions = [new Uint8Array([0x21])];\nexport const encodeViaAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeViaAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const via = {\n name,\n coinType,\n encode: encodeViaAddress,\n decode: decodeViaAddress,\n};\n//# sourceMappingURL=via.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"vlx\";\nconst coinType = 5655640;\nexport const encodeVlxAddress = base58UncheckedEncode;\nexport const decodeVlxAddress = base58UncheckedDecode;\nexport const vlx = {\n name,\n coinType,\n encode: encodeVlxAddress,\n decode: decodeVlxAddress,\n};\n//# sourceMappingURL=vlx.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"vlxLegacy\";\nconst coinType = 574;\nexport const encodeVlxLegacyAddress = base58UncheckedEncode;\nexport const decodeVlxLegacyAddress = base58UncheckedDecode;\nexport const vlxLegacy = {\n name,\n coinType,\n encode: encodeVlxLegacyAddress,\n decode: decodeVlxLegacyAddress,\n};\n//# sourceMappingURL=vlxLegacy.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"vsys\";\nconst coinType = 360;\nconst vsysChecksum = (source) => {\n if (source[0] !== 5 || source[1] !== 77 /* M */ || source.length !== 26)\n return false;\n const checksum = source.slice(-4);\n const newChecksum = keccak_256(blake2b(source.slice(0, -4), { dkLen: 32 })).slice(0, 4);\n if (!equalBytes(checksum, newChecksum))\n return false;\n return true;\n};\nexport const encodeVsysAddress = (source) => {\n if (!vsysChecksum(source))\n throw new Error(\"Unrecognised address format\");\n return base58UncheckedEncode(source);\n};\nexport const decodeVsysAddress = (source) => {\n const encoded = source.startsWith(\"address:\") ? source.slice(8) : source;\n if (encoded.length > 36)\n throw new Error(\"Unrecognised address format\");\n const decoded = base58UncheckedDecode(encoded);\n if (!vsysChecksum(decoded))\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const vsys = {\n name,\n coinType,\n encode: encodeVsysAddress,\n decode: decodeVsysAddress,\n};\n//# sourceMappingURL=vsys.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { bytesToHexWithoutPrefix, hexToBytes, stringToBytes, } from \"../utils/bytes.js\";\nimport { isAddress } from \"../utils/hex.js\";\nconst name = \"wan\";\nconst coinType = 5718350;\nconst wanChecksum = (addressBytes) => {\n const addressStr = bytesToHexWithoutPrefix(addressBytes);\n const address = addressStr.split(\"\");\n // hash of string representation of hex address\n // this is intentional\n const hash = keccak_256(stringToBytes(addressStr));\n let hashByte;\n for (let i = 0; i < 40; i++) {\n hashByte = hash[Math.floor(i / 2)];\n if (i % 2 === 0)\n hashByte = hashByte >> 4;\n else\n hashByte &= 0xf;\n if (address[i] > \"9\" && hashByte <= 7)\n address[i] = address[i].toUpperCase();\n }\n return `0x${address.join(\"\")}`;\n};\nexport const encodeWanAddress = (source) => {\n return wanChecksum(source);\n};\nexport const decodeWanAddress = (source) => {\n if (!isAddress(source))\n throw new Error(\"Unrecognised address format\");\n const bytes = hexToBytes(source);\n if (wanChecksum(bytes) !== source)\n throw new Error(\"Unrecognised address format\");\n return bytes;\n};\nexport const wan = {\n name,\n coinType,\n encode: encodeWanAddress,\n decode: decodeWanAddress,\n};\n//# sourceMappingURL=wan.js.map","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { utils } from \"@scure/base\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"waves\";\nconst coinType = 5741564;\nconst checksumFn = (source) => keccak_256(blake2b(source, { dkLen: 32 }));\nconst checksumLength = 4;\nconst wavesChecksum = utils.checksum(checksumLength, checksumFn);\nexport const encodeWavesAddress = base58UncheckedEncode;\nexport const decodeWavesAddress = (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded[0] !== 1)\n throw new Error(\"Invalid address format\");\n if (decoded[1] !== 87 || decoded.length !== 26)\n throw new Error(\"Invalid address format\");\n wavesChecksum.decode(decoded);\n return decoded;\n};\nexport const waves = {\n name,\n coinType,\n encode: encodeWavesAddress,\n decode: decodeWavesAddress,\n};\n//# sourceMappingURL=waves.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"wicc\";\nconst coinType = 99999;\nconst p2pkhVersions = [new Uint8Array([0x49])];\nconst p2shVersions = [new Uint8Array([0x33])];\nexport const encodeWiccAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeWiccAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const wicc = {\n name,\n coinType,\n encode: encodeWiccAddress,\n decode: decodeWiccAddress,\n};\n//# sourceMappingURL=wicc.js.map","import { createBech32mDecoder, createBech32mEncoder } from \"../utils/bech32.js\";\nconst name = \"xch\";\nconst coinType = 8444;\nconst hrp = \"xch\";\nconst limit = 90;\nexport const encodeXchAddress = createBech32mEncoder(hrp, limit);\nexport const decodeXchAddress = createBech32mDecoder(hrp, limit);\nexport const xch = {\n name,\n coinType,\n encode: encodeXchAddress,\n decode: decodeXchAddress,\n};\n//# sourceMappingURL=xch.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { base32Decode, base32Encode } from \"../utils/base32.js\";\nimport { bytesToHexWithoutPrefix } from \"../utils/bytes.js\";\nconst name = \"xem\";\nconst coinType = 43;\nexport const encodeXemAddress = base32Encode;\nexport const decodeXemAddress = (source) => {\n const address = source.toUpperCase().replace(/-/g, \"\");\n if (!address || address.length !== 40)\n throw new Error(\"Invalid address\");\n const decoded = base32Decode(address);\n let checksum = bytesToHexWithoutPrefix(keccak_256(decoded.slice(0, 21))).slice(0, 8);\n if (checksum !== bytesToHexWithoutPrefix(decoded.slice(21)))\n throw new Error(\"Invalid address\");\n return decoded;\n};\nexport const xem = {\n name,\n coinType,\n encode: encodeXemAddress,\n decode: decodeXemAddress,\n};\n//# sourceMappingURL=xem.js.map","import { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"xhv\";\nconst coinType = 535;\nexport const encodeXhvAddress = encodeXmrAddress;\nexport const decodeXhvAddress = decodeXmrAddress;\nexport const xhv = {\n name,\n coinType,\n encode: encodeXhvAddress,\n decode: decodeXhvAddress,\n};\n//# sourceMappingURL=xhv.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base32Decode, base32Encode } from \"../utils/base32.js\";\nimport { hexWithoutPrefixToBytes } from \"../utils/bytes.js\";\nconst name = \"xlm\";\nconst coinType = 148;\nconst versionByte = new Uint8Array([0x30]);\n// CRC16-XModem checksum\nconst xlmChecksum = (source) => {\n let crc = 0;\n for (let i = 0; i < source.length; i++) {\n const byte = source[i];\n let code = (crc >>> 8) & 0xff;\n code ^= byte & 0xff;\n code ^= code >>> 4;\n crc = (crc << 8) & 0xffff;\n crc ^= code;\n code = (code << 5) & 0xffff;\n crc ^= code;\n code = (code << 7) & 0xffff;\n crc ^= code;\n }\n return hexWithoutPrefixToBytes(crc.toString(16).padStart(4, \"0\")).reverse();\n};\nexport const encodeXlmAddress = (source) => {\n const payload = concatBytes(versionByte, source);\n const checksummed = xlmChecksum(payload);\n const payloadWithChecksum = concatBytes(payload, checksummed);\n return base32Encode(payloadWithChecksum);\n};\nexport const decodeXlmAddress = (source) => {\n const decoded = base32Decode(source);\n const version = decoded[0];\n const payload = decoded.slice(0, -2);\n const output = payload.slice(1);\n const checksum = decoded.slice(-2);\n if (version !== versionByte[0])\n throw new Error(\"Unrecognised address format\");\n const newChecksum = xlmChecksum(payload);\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return output;\n};\nexport const xlm = {\n name,\n coinType,\n encode: encodeXlmAddress,\n decode: decodeXlmAddress,\n};\n//# sourceMappingURL=xlm.js.map","import { sha256 } from \"@noble/hashes/sha256\";\nimport { base58xrp, utils } from \"@scure/base\";\nconst name = \"xrp\";\nconst coinType = 144;\nconst base58XrpCheck = utils.chain(utils.checksum(4, (data) => sha256(sha256(data))), base58xrp);\nexport const encodeXrpAddress = base58XrpCheck.encode;\nexport const decodeXrpAddress = base58XrpCheck.decode;\nexport const xrp = {\n name,\n coinType,\n encode: encodeXrpAddress,\n decode: decodeXrpAddress,\n};\n//# sourceMappingURL=xrp.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"xtz\";\nconst coinType = 1729;\n// Referenced from the followings\n// https://tezos.stackexchange.com/questions/183/base58-encoding-decoding-of-addresses-in-micheline\n// https://tezos.gitlab.io/api/p2p.html?highlight=contract_id#contract-id-22-bytes-8-bit-tag\nexport const encodeXtzAddress = (source) => {\n if (source.length !== 22 && source.length !== 21)\n throw new Error(\"Unrecognised address format\");\n const version = source[0];\n if (version === 0) {\n let prefix;\n if (source[1] === 0x00)\n prefix = new Uint8Array([0x06, 0xa1, 0x9f]); // prefix tz1 equal 06a19f\n else if (source[1] === 0x01)\n prefix = new Uint8Array([0x06, 0xa1, 0xa1]); // prefix tz2 equal 06a1a1\n else if (source[1] === 0x02)\n prefix = new Uint8Array([0x06, 0xa1, 0xa4]); // prefix tz3 equal 06a1a4\n else\n throw new Error(\"Unrecognised address format\");\n return base58CheckEncode(concatBytes(prefix, source.slice(2)));\n }\n if (version === 1) {\n return base58CheckEncode(concatBytes(new Uint8Array([0x02, 0x5a, 0x79]) /* prefix KT1 equal 025a79 */, source.slice(1, 21)));\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const decodeXtzAddress = (source) => {\n const decoded = base58CheckDecode(source).slice(3);\n const prefix = source.slice(0, 3);\n if (prefix === \"tz1\")\n return concatBytes(new Uint8Array([0x00, 0x00]), decoded);\n if (prefix === \"tz2\")\n return concatBytes(new Uint8Array([0x00, 0x01]), decoded);\n if (prefix === \"tz3\")\n return concatBytes(new Uint8Array([0x00, 0x02]), decoded);\n if (prefix === \"KT1\")\n return concatBytes(new Uint8Array([0x01]), decoded, new Uint8Array([0x00]));\n throw new Error(\"Unrecognised address format\");\n};\nexport const xtz = {\n name,\n coinType,\n encode: encodeXtzAddress,\n decode: decodeXtzAddress,\n};\n//# sourceMappingURL=xtz.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"xvg\";\nconst coinType = 77;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x21])];\nexport const encodeXvgAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeXvgAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const xvg = {\n name,\n coinType,\n encode: encodeXvgAddress,\n decode: decodeXvgAddress,\n};\n//# sourceMappingURL=xvg.js.map","import { createZcashDecoder, createZcashEncoder } from \"../utils/zcash.js\";\nconst name = \"zec\";\nconst coinType = 133;\nconst hrp = \"zs\";\nconst p2pkhVersions = [new Uint8Array([0x1c, 0xb8])];\nconst p2shVersions = [new Uint8Array([0x1c, 0xbd])];\nexport const encodeZecAddress = createZcashEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeZecAddress = createZcashDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const zec = {\n name,\n coinType,\n encode: encodeZecAddress,\n decode: decodeZecAddress,\n};\n//# sourceMappingURL=zec.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"zen\";\nconst coinType = 121;\nconst validPrefixes = [\n new Uint8Array([0x20, 0x89]),\n new Uint8Array([0x1c, 0xb8]),\n new Uint8Array([0x20, 0x96]),\n new Uint8Array([0x1c, 0xbd]),\n new Uint8Array([0x16, 0x9a]), // zc\n];\nexport const encodeZenAddress = (source) => {\n const prefix = source.slice(0, 2);\n if (!validPrefixes.some((x) => equalBytes(x, prefix)))\n throw new Error(\"Invalid prefix\");\n return base58CheckEncode(source);\n};\nexport const decodeZenAddress = (source) => {\n const decoded = base58CheckDecode(source);\n const prefix = decoded.slice(0, 2);\n if (!validPrefixes.some((x) => equalBytes(x, prefix)))\n throw new Error(\"Invalid prefix\");\n return decoded;\n};\nexport const zen = {\n name,\n coinType,\n encode: encodeZenAddress,\n decode: decodeZenAddress,\n};\n//# sourceMappingURL=zen.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"zil\";\nconst coinType = 313;\nexport const encodeZilAddress = createBech32Encoder(\"zil\");\nexport const decodeZilAddress = createBech32Decoder(\"zil\");\nexport const zil = {\n name,\n coinType,\n encode: encodeZilAddress,\n decode: decodeZilAddress,\n};\n//# sourceMappingURL=zil.js.map","export const evmCoinTypeToNameMap = Object.freeze({\n /* Chain ID: 0 */\n \"2147483648\": [\"default\", \"Default\"],\n /* Chain ID: 10 */\n \"2147483658\": [\"op\", \"Optimism\"],\n /* Chain ID: 25 */\n \"2147483673\": [\"cro\", \"Cronos\"],\n /* Chain ID: 56 */\n \"2147483704\": [\"bsc\", \"BNB Smart Chain\"],\n /* Chain ID: 60 */\n \"2147483708\": [\"go\", \"GoChain\"],\n /* Chain ID: 61 */\n \"2147483709\": [\"etc\", \"Ethereum Classic\"],\n /* Chain ID: 88 */\n \"2147483736\": [\"tomo\", \"TomoChain\"],\n /* Chain ID: 99 */\n \"2147483747\": [\"poa\", \"POA\"],\n /* Chain ID: 100 */\n \"2147483748\": [\"gno\", \"Gnosis\"],\n /* Chain ID: 108 */\n \"2147483756\": [\"tt\", \"ThunderCore\"],\n /* Chain ID: 137 */\n \"2147483785\": [\"matic\", \"Polygon\"],\n /* Chain ID: 169 */\n \"2147483817\": [\"manta\", \"Manta Pacific\"],\n /* Chain ID: 246 */\n \"2147483894\": [\"ewt\", \"Energy Web\"],\n /* Chain ID: 250 */\n \"2147483898\": [\"ftm\", \"Fantom Opera\"],\n /* Chain ID: 288 */\n \"2147483936\": [\"boba\", \"Boba\"],\n /* Chain ID: 324 */\n \"2147483972\": [\"zksync\", \"zkSync\"],\n /* Chain ID: 361 */\n \"2147484009\": [\"theta\", \"Theta\"],\n /* Chain ID: 820 */\n \"2147484468\": [\"clo\", \"Callisto\"],\n /* Chain ID: 1088 */\n \"2147484736\": [\"metis\", \"Metis\"],\n /* Chain ID: 5000 */\n \"2147488648\": [\"mantle\", \"Mantle\"],\n /* Chain ID: 8453 */\n \"2147492101\": [\"base\", \"Base\"],\n /* Chain ID: 39797 */\n \"2147523445\": [\"nrg\", \"Energi\"],\n /* Chain ID: 42161 */\n \"2147525809\": [\"arb1\", \"Arbitrum One\"],\n /* Chain ID: 42220 */\n \"2147525868\": [\"celo\", \"Celo\"],\n /* Chain ID: 43114 */\n \"2147526762\": [\"avaxc\", \"Avalanche C-Chain\"],\n /* Chain ID: 59144 */\n \"2147542792\": [\"linea\", \"Linea\"],\n /* Chain ID: 534352 */\n \"2148018000\": [\"scr\", \"Scroll\"],\n /* Chain ID: 7777777 */\n \"2155261425\": [\"zora\", \"Zora\"],\n});\nexport const nonEvmCoinTypeToNameMap = Object.freeze({\n \"0\": [\"btc\", \"Bitcoin\"],\n \"2\": [\"ltc\", \"Litecoin\"],\n \"3\": [\"doge\", \"Dogecoin\"],\n \"4\": [\"rdd\", \"Reddcoin\"],\n \"5\": [\"dash\", \"Dash\"],\n \"6\": [\"ppc\", \"Peercoin\"],\n \"7\": [\"nmc\", \"Namecoin\"],\n \"14\": [\"via\", \"Viacoin\"],\n \"20\": [\"dgb\", \"DigiByte\"],\n \"22\": [\"mona\", \"Monacoin\"],\n \"42\": [\"dcr\", \"Decred\"],\n \"43\": [\"xem\", \"NEM\"],\n \"55\": [\"aib\", \"AIB\"],\n \"57\": [\"sys\", \"Syscoin\"],\n \"60\": [\"eth\", \"Ethereum\"],\n \"61\": [\"etcLegacy\", \"[LEGACY] Ethereum Classic\"],\n \"74\": [\"icx\", \"ICON\"],\n \"77\": [\"xvg\", \"Verge\"],\n \"105\": [\"strat\", \"Stratis\"],\n \"111\": [\"ark\", \"ARK\"],\n \"118\": [\"atom\", \"Atom\"],\n \"121\": [\"zen\", \"Zencash\"],\n \"128\": [\"xmr\", \"Monero\"],\n \"133\": [\"zec\", \"Zcash\"],\n \"134\": [\"lsk\", \"Lisk\"],\n \"135\": [\"steem\", \"Steem\"],\n \"136\": [\"firo\", \"Firo\"],\n \"137\": [\"rbtc\", \"RSK\"],\n \"141\": [\"kmd\", \"Komodo\"],\n \"144\": [\"xrp\", \"Ripple\"],\n \"145\": [\"bch\", \"Bitcoin Cash\"],\n \"148\": [\"xlm\", \"Stellar Lumens\"],\n \"153\": [\"btm\", \"Bytom\"],\n \"156\": [\"btg\", \"Bitcoin Gold\"],\n \"165\": [\"nano\", \"Nano\"],\n \"175\": [\"rvn\", \"Ravencoin\"],\n \"178\": [\"poaLegacy\", \"[LEGACY] POA\"],\n \"192\": [\"lcc\", \"LitecoinCash\"],\n \"194\": [\"eos\", \"EOS\"],\n \"195\": [\"trx\", \"Tron\"],\n \"204\": [\"bcn\", \"Bytecoin\"],\n \"235\": [\"fio\", \"FIO\"],\n \"236\": [\"bsv\", \"BitcoinSV\"],\n \"242\": [\"nim\", \"Nimiq\"],\n \"246\": [\"ewtLegacy\", \"[LEGACY] Energy Web\"],\n \"283\": [\"algo\", \"Algorand\"],\n \"291\": [\"iost\", \"IOST\"],\n \"301\": [\"divi\", \"Divi Project\"],\n \"304\": [\"iotx\", \"IoTeX\"],\n \"308\": [\"bts\", \"Bitshares\"],\n \"309\": [\"ckb\", \"Nervos CKB\"],\n \"313\": [\"zil\", \"Zilliqa\"],\n \"326\": [\"mrx\", \"Metrix Coin\"],\n \"330\": [\"luna\", \"Terra\"],\n \"354\": [\"dot\", \"Polkadot\"],\n \"360\": [\"vsys\", \"V Systems\"],\n \"367\": [\"abbc\", \"ABBC\"],\n \"397\": [\"near\", \"NEAR Protocol\"],\n \"415\": [\"etn\", \"Electroneum\"],\n \"425\": [\"aion\", \"Aion\"],\n \"434\": [\"ksm\", \"Kusama\"],\n \"457\": [\"ae\", \"æternity\"],\n \"459\": [\"kava\", \"Kava\"],\n \"461\": [\"fil\", \"Filecoin\"],\n \"472\": [\"ar\", \"Arweave\"],\n \"489\": [\"cca\", \"Counos\"],\n \"500\": [\"thetaLegacy\", \"[LEGACY] Theta\"],\n \"501\": [\"sol\", \"Solana\"],\n \"508\": [\"egld\", \"MultiversX\"],\n \"535\": [\"xhv\", \"Haven Protocol\"],\n \"539\": [\"flow\", \"Flow\"],\n \"566\": [\"iris\", \"Irisnet\"],\n \"568\": [\"lrg\", \"Large Coin\"],\n \"569\": [\"sero\", \"Super Zero Protocol\"],\n \"570\": [\"bdx\", \"Beldex\"],\n \"571\": [\"ccxx\", \"Counos X\"],\n \"573\": [\"srm\", \"Serum\"],\n \"574\": [\"vlxLegacy\", \"[LEGACY] Velas\"],\n \"576\": [\"bps\", \"BitcoinPoS\"],\n \"589\": [\"tfuel\", \"Theta Fuel\"],\n \"592\": [\"grin\", \"Grin\"],\n \"700\": [\"gnoLegacy\", \"[LEGACY] Gnosis\"],\n \"714\": [\"bnb\", \"BNB\"],\n \"784\": [\"sui\", \"Sui\"],\n \"818\": [\"vet\", \"VeChain\"],\n \"820\": [\"cloLegacy\", \"[LEGACY] Callisto\"],\n \"825\": [\"hive\", \"Hive\"],\n \"888\": [\"neo\", \"NEO\"],\n \"889\": [\"tomoLegacy\", \"[LEGACY] TomoChain\"],\n \"904\": [\"hnt\", \"Helium\"],\n \"931\": [\"rune\", \"THORChain\"],\n \"999\": [\"bcd\", \"Bitcoin Diamond\"],\n \"1001\": [\"ttLegacy\", \"[LEGACY] ThunderCore\"],\n \"1007\": [\"ftmLegacy\", \"[LEGACY] Fantom\"],\n \"1023\": [\"one\", \"HARMONY-ONE\"],\n \"1024\": [\"ont\", \"Ontology\"],\n \"1237\": [\"nostr\", \"Nostr\"],\n \"1729\": [\"xtz\", \"Tezos\"],\n \"1815\": [\"ada\", \"Cardano\"],\n \"1991\": [\"sc\", \"Sia\"],\n \"2301\": [\"qtum\", \"QTUM\"],\n \"2303\": [\"gxc\", \"GXChain\"],\n \"2305\": [\"ela\", \"Elastos\"],\n \"2718\": [\"nas\", \"Nebulas\"],\n \"3030\": [\"hbar\", \"Hedera HBAR\"],\n \"4218\": [\"iota\", \"IOTA\"],\n \"5353\": [\"hns\", \"Handshake\"],\n \"5757\": [\"stx\", \"Stacks\"],\n \"6060\": [\"goLegacy\", \"[LEGACY] GoChain\"],\n \"8444\": [\"xch\", \"Chia\"],\n \"8964\": [\"nuls\", \"NULS\"],\n \"9000\": [\"avax\", \"Avalanche\"],\n \"9004\": [\"strk\", \"StarkNet\"],\n \"9797\": [\"nrgLegacy\", \"[LEGACY] Energi\"],\n \"16754\": [\"ardr\", \"Ardor\"],\n \"19167\": [\"flux\", \"Flux\"],\n \"52752\": [\"celoLegacy\", \"[LEGACY] Celo\"],\n \"99999\": [\"wicc\", \"Waykichain\"],\n \"5655640\": [\"vlx\", \"Velas\"],\n \"5718350\": [\"wan\", \"Wanchain\"],\n \"5741564\": [\"waves\", \"Waves\"],\n});\nexport const coinTypeToNameMap = Object.freeze({\n ...nonEvmCoinTypeToNameMap,\n ...evmCoinTypeToNameMap,\n});\n//# sourceMappingURL=coinTypeToNameMap.js.map","import { evmCoinTypeToNameMap, nonEvmCoinTypeToNameMap, } from \"./coinTypeToNameMap.js\";\nexport const evmCoinNameToTypeMap = Object.freeze(Object.fromEntries(Object.entries(evmCoinTypeToNameMap).map(([k, [v]]) => [v, parseInt(k)])));\nexport const nonEvmCoinNameToTypeMap = Object.freeze(Object.fromEntries(Object.entries(nonEvmCoinTypeToNameMap).map(([k, [v]]) => [v, parseInt(k)])));\nexport const coinNameToTypeMap = Object.freeze({\n ...evmCoinNameToTypeMap,\n ...nonEvmCoinNameToTypeMap,\n});\n//# sourceMappingURL=coinNameToTypeMap.js.map","export const SLIP44_MSB = 0x80000000;\nexport const isEvmCoinType = (coinType) => ((coinType & SLIP44_MSB) !== 0);\nexport const evmChainIdToCoinType = (chainId) => {\n if (chainId >= SLIP44_MSB)\n throw new Error(\"Invalid chainId\");\n return ((SLIP44_MSB | chainId) >>> 0);\n};\nexport const coinTypeToEvmChainId = (coinType) => {\n if ((coinType & SLIP44_MSB) === 0)\n throw new Error(\"Coin type is not an EVM chain\");\n return (((SLIP44_MSB - 1) & coinType) >>\n 0);\n};\n//# sourceMappingURL=evm.js.map","import * as formats from \"./coins.js\";\nimport { coinNameToTypeMap, evmCoinNameToTypeMap, nonEvmCoinNameToTypeMap, } from \"./consts/coinNameToTypeMap.js\";\nimport { coinTypeToNameMap, evmCoinTypeToNameMap, nonEvmCoinTypeToNameMap, } from \"./consts/coinTypeToNameMap.js\";\nimport { SLIP44_MSB, coinTypeToEvmChainId } from \"./utils/evm.js\";\nexport { coinNameToTypeMap, coinTypeToNameMap, evmCoinNameToTypeMap, evmCoinTypeToNameMap, nonEvmCoinNameToTypeMap, nonEvmCoinTypeToNameMap, };\nexport const getCoderByCoinName = (name) => {\n const format = formats[name];\n if (!format) {\n // EVM coin\n const coinType = coinNameToTypeMap[name];\n if (!coinType)\n throw new Error(`Unsupported coin: ${name}`);\n const evmChainId = coinTypeToEvmChainId(coinType);\n const ethFormat = formats[\"eth\"];\n return {\n name: name,\n coinType,\n evmChainId,\n encode: ethFormat.encode,\n decode: ethFormat.decode,\n };\n }\n return format;\n};\nexport const getCoderByCoinType = (coinType) => {\n const names = coinTypeToNameMap[String(coinType)];\n // https://docs.ens.domains/ens-improvement-proposals/ensip-11-evmchain-address-resolution\n if (coinType >= SLIP44_MSB) {\n // EVM coin\n const evmChainId = coinTypeToEvmChainId(coinType);\n const isUnknownChain = !names;\n const name = isUnknownChain ? `Unknown Chain (${evmChainId})` : names[0]; // name is derivable\n const ethFormat = formats[\"eth\"];\n return {\n name,\n coinType: coinType,\n evmChainId,\n isUnknownChain,\n encode: ethFormat.encode,\n decode: ethFormat.decode,\n };\n }\n if (!names) {\n throw new Error(`Unsupported coin type: ${coinType}`);\n }\n const [name] = names;\n const format = formats[name];\n return format;\n};\n//# sourceMappingURL=index.js.map","import { ChainName } from \"@/types\";\nimport { convertEVMChainIdToCoinType } from \"@/utils\";\nimport { getCoderByCoinName } from \"@ensdomains/address-encoder\";\nimport { isAddress } from \"viem\";\nimport { base, arbitrum, polygon, optimism, zora, mainnet } from \"viem/chains\";\n\nexport interface SupportedEnsAddress {\n validateFunc?: (value: string) => boolean;\n isEMV?: boolean;\n label: string;\n coinType: number;\n chainId?: number;\n chainName: ChainName;\n placeholder?: string;\n}\n\nconst isValidEmvAddress = (value: string): boolean => {\n return isAddress(value);\n};\n\nconst verifyAddress = (value: string, coinName: string): boolean => {\n\n try {\n const coder = getCoderByCoinName(coinName);\n coder.decode(value);\n return true;\n } catch(err) {\n console.log(`Failed to decode value: ${coinName}`, err);\n return false;\n }\n\n}\n\nconst isValidBtcAddress = (value: string): boolean => {\n return verifyAddress(value, \"btc\")\n}\n\nconst isValidSolAddress = (value: string): boolean => {\n return verifyAddress(value, \"sol\")\n}\n\n\nexport const supportedAddresses: SupportedEnsAddress[] = [\n {\n isEMV: true,\n label: \"Ethereum\",\n coinType: 60,\n chainId: mainnet.id,\n chainName: \"eth\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: false,\n label: \"Bitcoin\",\n coinType: 0,\n chainName: \"bitcoin\",\n chainId: 0,\n placeholder: \"7Mi3m...sy7dw\",\n validateFunc: isValidBtcAddress\n },\n {\n isEMV: false,\n label: \"Solana\",\n coinType: 501,\n chainName: \"sol\",\n chainId: 501,\n placeholder: \"1BH2S...Y3x33\",\n validateFunc: isValidSolAddress\n },\n {\n isEMV: true,\n label: \"Base\",\n coinType: convertEVMChainIdToCoinType(base.id),\n chainId: base.id,\n chainName: \"base\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Arbitrum\",\n coinType: convertEVMChainIdToCoinType(arbitrum.id),\n chainId: arbitrum.id,\n chainName: \"arb\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Polygon\",\n coinType: convertEVMChainIdToCoinType(polygon.id),\n chainId: polygon.id,\n chainName: \"matic\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Optimism\",\n coinType: convertEVMChainIdToCoinType(optimism.id),\n chainId: optimism.id,\n chainName: \"op\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Zora\",\n coinType: convertEVMChainIdToCoinType(zora.id),\n chainId: zora.id,\n chainName: \"zora\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n];\n\nexport const getSupportedAddressMap = (): Record<number,SupportedEnsAddress> => {\n const map: Record<number,SupportedEnsAddress> = {}\n\n supportedAddresses.forEach(addr => {\n map[addr.coinType] = addr;\n })\n\n return map;\n}\n\nexport const getSupportedAddressByCoin = (\n coin: number\n): SupportedEnsAddress | undefined => {\n return supportedAddresses.find(addr => addr.coinType === coin);\n};\n\nexport const getSupportedAddressByName = (\n name: ChainName\n): SupportedEnsAddress | undefined => {\n return supportedAddresses.find(addr => addr.chainName === name);\n};\n","export interface EnsRecords {\n addresses: EnsAddressRecord[];\n texts: EnsTextRecord[];\n contenthash?: EnsContenthashRecord;\n}\n\nexport interface EnsTextRecord {\n key: string;\n value: string;\n}\n\nexport interface EnsAddressRecord {\n coinType: number;\n value: string;\n}\n\nexport interface EnsContenthashRecord {\n protocol: ContenthashProtocol;\n value: string;\n}\n\nexport enum ContenthashProtocol {\n Ipfs = \"ipfs\",\n Onion = \"onion3\",\n Arweave = \"arweave\",\n Skynet = \"skynet\",\n Swarm = \"swarm\",\n}\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase<Prefix>}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders<Prefix>} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n CID.createV0(\n /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID<Data, Format, Alg, 1>}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID<Data, Format, Alg, 1>} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID<Data, Format, Alg, Version>}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link<Data, Format, Alg, Version>} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder<string>} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON<this>}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link<Data, Format, Alg, Version>|U} input\n * @returns {CID<Data, Format, Alg, Version>|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest<Alg>} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest<Alg>} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n * @returns {CID<Data, Format, Alg, Version>}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {CID<Data, Code, Alg, 1>}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n * @returns {[CID<T, C, A, V>, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","import { baseX } from './base.js'\n\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n","import { base32 } from \"multiformats/bases/base32\";\nimport { base36 } from \"multiformats/bases/base36\";\nimport { CID } from \"multiformats/cid\";\n// Label's max length in DNS (https://tools.ietf.org/html/rfc1034#page-7)\nconst dnsLabelMaxLength = 63;\n/**\n * Take any ipfsHash and convert it to DNS-compatible CID\n * @param ipfsHash a regular ipfs hash either a cid v0 or v1\n * @return the resulting ipfs hash as a cid v1\n */\nexport const cidForWeb = (ipfsHash) => {\n let cid = CID.parse(ipfsHash);\n if (cid.version === 0) {\n cid = cid.toV1();\n }\n const dnsLabel = cid.toString(base32);\n if (dnsLabel.length > dnsLabelMaxLength) {\n const b36 = cid.toString(base36);\n if (b36.length <= dnsLabelMaxLength) {\n return b36;\n }\n throw new TypeError(`CID is longer than DNS limit of ${dnsLabelMaxLength} characters and is not compatible with public gateways`);\n }\n return dnsLabel;\n};\n/**\n * Take any ipfsHash and convert it to a CID v1 encoded in base32.\n * @param ipfsHash a regular ipfs hash either a cid v0 or v1 (v1 will remain unchanged)\n * @return the resulting ipfs hash as a cid v1\n */\nexport const cidV0ToV1Base32 = (ipfsHash) => {\n let cid = CID.parse(ipfsHash);\n if (cid.version === 0) {\n cid = cid.toV1();\n }\n return cid.toString(base32);\n};\n/**\n * Concats two Uint8Arrays\n * @param array1 first array\n * @param array2 second array\n * @return the resulting array\n */\nexport const concatUint8Arrays = (array1, array2) => {\n let result = new Uint8Array(array1.length + array2.length);\n result.set(array1, 0);\n result.set(array2, array1.length);\n return result;\n};\n//# sourceMappingURL=helpers.js.map","export const codeToName = {\n 0xe3: \"ipfs\",\n 0xe5: \"ipns\",\n 0xe4: \"swarm\",\n 0x01bc: \"onion\",\n 0x01bd: \"onion3\",\n 0xb19910: \"skynet\",\n 0xb29910: \"arweave\",\n};\nexport const nameToCode = {\n ipfs: 0xe3,\n ipns: 0xe5,\n swarm: 0xe4,\n onion: 0x01bc,\n onion3: 0x01bd,\n skynet: 0xb19910,\n arweave: 0xb29910,\n};\n//# sourceMappingURL=map.js.map","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n","import { base32 } from \"multiformats/bases/base32\";\nimport { base36 } from \"multiformats/bases/base36\";\nimport { base58btc } from \"multiformats/bases/base58\";\nimport { base64url } from \"multiformats/bases/base64\";\nimport { CID } from \"multiformats/cid\";\nimport { create as createDigest, decode as multihashDecode, } from \"multiformats/hashes/digest\";\n/**\n * Convert a hexadecimal string to Bytes, the string can start with or without '0x'\n * @param hex a hexadecimal value\n * @return the resulting Bytes\n */\nexport const hexStringToBytes = (hex) => {\n let value = hex;\n if (value.startsWith(\"0x\")) {\n value = value.slice(2);\n }\n if (value.length % 2 !== 0) {\n throw new Error(\"Invalid hex string\");\n }\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length; i += 2) {\n bytes[i / 2] = parseInt(value.slice(i, i + 2), 16);\n }\n return bytes;\n};\nexport const bytesToHexString = (bytes) => {\n let hex = \"\";\n for (let i = 0; i < bytes.length; i++) {\n hex += bytes[i].toString(16).padStart(2, \"0\");\n }\n return hex;\n};\n/**\n * Validates IPNS identifier to safeguard against insecure names.\n * @param cid used in ipns-ns\n * @return true if cid is a valid cryptographic IPNS identifier\n */\nconst isCryptographicIPNS = (cid) => {\n try {\n const { multihash } = cid;\n // Additional check for identifiers shorter\n // than what inlined ED25519 pubkey would be\n // https://github.com/ensdomains/ens-app/issues/849#issuecomment-777088950\n if (multihash.size < 38) {\n const mh = multihashDecode(multihash.bytes);\n // ED25519 pubkeys are inlined using identity hash function\n // and we should not see anything shorter than that\n if (mh.code === 0x0 && mh.size < 36) {\n // One can read inlined string value via:\n // console.log('ipns-ns id:', String(multiH.decode(new CID(value).multihash).digest))\n return false;\n }\n }\n // ok, CID looks fine\n return true;\n }\n catch (_) {\n return false;\n }\n};\nconst base64Decode = (value) => base64url.decode(`u${value}`);\n/**\n * list of known encoding,\n * encoding should be a function that takes a `string` input,\n * and return a {@link Bytes} result\n */\nconst encodes = {\n skynet: (value) => {\n return base64Decode(value);\n },\n swarm: (value) => {\n const bytes = hexStringToBytes(value);\n const multihash = createDigest(0x1b, bytes);\n return CID.create(1, 0xfa, multihash).bytes;\n },\n ipfs: (value) => {\n return CID.parse(value).toV1().bytes;\n },\n ipns: (value) => {\n let cid;\n try {\n cid = CID.parse(value, value.startsWith(\"k\") ? base36 : undefined);\n }\n catch (e) {\n // legacy v0 decode\n const bytes = base58btc.decode(`z${value}`);\n cid = new CID(0, 0x72, createDigest(0x00, bytes.slice(2)), bytes);\n }\n if (!isCryptographicIPNS(cid)) {\n throw Error(\"ipns-ns allows only valid cryptographic libp2p-key identifiers, try using ED25519 pubkey instead\");\n }\n // Represent IPNS name as a CID with libp2p-key codec\n // https://github.com/libp2p/specs/blob/master/RFC/0001-text-peerid-cid.md\n return CID.create(1, 0x72, cid.multihash).bytes;\n },\n utf8: (value) => {\n const encoder = new TextEncoder();\n return encoder.encode(value);\n },\n arweave: (value) => {\n return base64Decode(value);\n },\n};\n/**\n * list of known decoding,\n * decoding should be a function that takes a `Uint8Array` input,\n * and return a `string` result\n */\nconst decodes = {\n hexMultiHash: (value) => {\n const cid = CID.decode(value);\n return bytesToHexString(multihashDecode(cid.multihash.bytes).digest);\n },\n ipfs: (value) => {\n const cid = CID.decode(value).toV1();\n return cid.toString(cid.code === 0x72 ? base36 : base32);\n },\n ipns: (value) => {\n const cid = CID.decode(value).toV1();\n if (!isCryptographicIPNS(cid)) {\n // Value is not a libp2p-key, return original string\n console.warn(\"[ensdomains/content-hash] use of non-cryptographic identifiers in ipns-ns is deprecated and will be removed, migrate to ED25519 libp2p-key\");\n return String.fromCodePoint(...CID.decode(value).multihash.digest);\n // TODO: start throwing an error (after some deprecation period)\n // throw Error('ipns-ns allows only valid cryptographic libp2p-key identifiers, try using ED25519 pubkey instead')\n }\n return cid.toString(base36);\n },\n utf8: (value) => {\n const decoder = new TextDecoder();\n return decoder.decode(value);\n },\n base64: (value) => {\n return base64url.encode(value).substring(1);\n },\n};\n/**\n * list of known encoding/decoding for a given codec,\n * `encode` should be chosen among the `encodes` functions\n * `decode` should be chosen among the `decodes` functions\n */\nexport const profiles = {\n skynet: {\n encode: encodes.skynet,\n decode: decodes.base64,\n },\n swarm: {\n encode: encodes.swarm,\n decode: decodes.hexMultiHash,\n },\n ipfs: {\n encode: encodes.ipfs,\n decode: decodes.ipfs,\n },\n ipns: {\n encode: encodes.ipns,\n decode: decodes.ipns,\n },\n arweave: {\n encode: encodes.arweave,\n decode: decodes.base64,\n },\n default: {\n encode: encodes.utf8,\n decode: decodes.utf8,\n },\n};\n//# sourceMappingURL=profiles.js.map","import { varint } from \"multiformats\";\nimport { concatUint8Arrays } from \"./helpers.js\";\nimport { codeToName, nameToCode } from \"./map.js\";\nimport { bytesToHexString, hexStringToBytes, profiles, } from \"./profiles.js\";\nexport {} from \"./map.js\";\nexport { cidForWeb, cidV0ToV1Base32 } from \"./helpers.js\";\n/**\n * Decode a Content Hash.\n * @param contentHash an hex string containing a content hash\n * @return the decoded content\n */\nexport const decode = (contentHash) => {\n const bytes = hexStringToBytes(contentHash);\n const [code, offset] = varint.decode(bytes);\n const value = bytes.slice(offset);\n const name = codeToName[code];\n let profile = profiles[name];\n if (!profile)\n profile = profiles[\"default\"];\n return profile.decode(value);\n};\n/**\n * General purpose encoding function\n * @param name Codec name\n * @param value Content to encode\n */\nexport const encode = (name, value) => {\n let profile = profiles[name];\n if (!profile)\n profile = profiles[\"default\"];\n const bytes = profile.encode(value);\n const code = nameToCode[name];\n const codeBytes = varint.encodeTo(code, new Uint8Array(varint.encodingLength(code)));\n return bytesToHexString(concatUint8Arrays(codeBytes, bytes));\n};\n/**\n * Extract the codec of a content hash\n * @param contentHash hex string containing a content hash\n * @return the extracted codec\n */\nexport const getCodec = (contentHash) => {\n const bytes = hexStringToBytes(contentHash);\n const [code] = varint.decode(bytes);\n return codeToName[code];\n};\n//# sourceMappingURL=index.js.map","import { ContenthashProtocol } from \"@/types\";\nimport { encode } from \"@ensdomains/content-hash\";\n\nexport interface SupportedContenthashRecord {\n protocol: ContenthashProtocol;\n label: string;\n}\n\nexport const supportedContenthashRecords: SupportedContenthashRecord[] = [\n {\n protocol: ContenthashProtocol.Ipfs,\n label: \"Ipfs\",\n },\n {\n protocol: ContenthashProtocol.Onion,\n label: \"Onion3\",\n },\n {\n protocol: ContenthashProtocol.Arweave,\n label: \"Arweave\",\n },\n {\n protocol: ContenthashProtocol.Skynet,\n label: \"Skynet\",\n },\n {\n protocol: ContenthashProtocol.Swarm,\n label: \"Swarm\",\n },\n];\n\nexport const getSupportedChashByProtocol = (\n protocol: ContenthashProtocol\n): SupportedContenthashRecord | undefined => {\n return supportedContenthashRecords.find(chash => chash.protocol === protocol);\n};\n\nexport const isContenthashValid = (\n protocol: ContenthashProtocol,\n value: string\n) => {\n try {\n encode(protocol, value);\n return true;\n } catch (err) {\n return false;\n }\n};\n","import { IconName } from \"@/components\";\n\nexport enum TextRecordCategory {\n Image = \"image\",\n General = \"general\",\n Social = \"social\",\n}\nexport interface SupportedTextRecord {\n icon: IconName;\n key: string;\n category: TextRecordCategory;\n label?: string;\n placeholder?: string;\n}\n\nexport const supportedTexts: SupportedTextRecord[] = [\n {\n icon: \"circle-person\",\n key: \"avatar\",\n category: TextRecordCategory.Image,\n label: \"Avatar\",\n placeholder: \"https://\",\n },\n {\n icon: \"image\",\n key: \"header\",\n category: TextRecordCategory.Image,\n label: \"Header\",\n placeholder: \"https://\",\n },\n {\n icon: \"person\",\n key: \"name\",\n category: TextRecordCategory.General,\n label: \"Nickname\",\n placeholder: \"John Smith\",\n },\n {\n icon: \"book\",\n key: \"description\",\n category: TextRecordCategory.General,\n label: \"Short bio\",\n placeholder: \"I am a ninja from far away land\",\n },\n {\n icon: \"globe\",\n key: \"url\",\n category: TextRecordCategory.General,\n label: \"Website\",\n placeholder: \"https://namespace.ninja\",\n },\n {\n icon: \"map-pin\",\n key: \"location\",\n category: TextRecordCategory.General,\n label: \"Location\",\n placeholder: \"Metaverse\",\n },\n {\n icon: \"mail\",\n key: \"mail\",\n category: TextRecordCategory.General,\n label: \"E-Mail\",\n placeholder: \"name@example.com\",\n },\n {\n icon: \"twitter\",\n key: \"com.twitter\",\n category: TextRecordCategory.Social,\n label: \"Twitter\",\n placeholder: \"eg. namespace\",\n },\n {\n icon: \"discord\",\n key: \"com.discord\",\n category: TextRecordCategory.Social,\n label: \"Discord\",\n placeholder: \"eg. namespace\",\n },\n {\n icon: \"github\",\n key: \"com.github\",\n category: TextRecordCategory.Social,\n label: \"Github\",\n placeholder: \"eg. namespace\",\n },\n {\n icon: \"telegram\",\n key: \"org.telegram\",\n category: TextRecordCategory.Social,\n label: \"Telegram\",\n placeholder: \"eg. namespace\",\n },\n {\n icon: \"youtube\",\n key: \"com.youtube\",\n category: TextRecordCategory.Social,\n label: \"Youtube\",\n placeholder: \"eg. namespace\",\n },\n];\n\nexport const getSupportedTextMap = (): Record<string, SupportedTextRecord> => {\n const map: Record<string, SupportedTextRecord> = {};\n supportedTexts.forEach(txt => {\n map[txt.key] = txt;\n });\n return map;\n};\n\nexport const getSupportedText = (key: string) => {\n return supportedTexts.find(txt => txt.key === key);\n};\n","import { EnsTextRecord } from \"@/types\";\nimport {\n SupportedTextRecord,\n supportedTexts,\n TextRecordCategory,\n} from \"@/constants\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Icon, Input, Text } from \"@/components/atoms\";\nimport { capitalize } from \"@/utils\";\n\ninterface TextRecordsProps {\n initialTexts: EnsTextRecord[];\n texts: EnsTextRecord[];\n onTextsChanged: (texts: EnsTextRecord[]) => void;\n category: TextRecordCategory;\n searchFilter?: string;\n}\n\nexport const TextRecords = ({\n texts,\n onTextsChanged,\n category,\n initialTexts,\n searchFilter,\n}: TextRecordsProps) => {\n const existingTextsMap = useMemo(() => {\n const map: Record<string, EnsTextRecord> = {};\n texts.forEach(txt => {\n map[txt.key] = txt;\n });\n return map;\n }, [texts]);\n\n const [lastAddedKey, setLastAddedKey] = useState<string | null>(null);\n const inputRefs = useRef<Record<string, HTMLInputElement | null>>({});\n\n useEffect(() => {\n if (lastAddedKey && inputRefs.current[lastAddedKey]) {\n inputRefs.current[lastAddedKey]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n inputRefs.current[lastAddedKey]?.focus();\n setLastAddedKey(null);\n }\n }, [texts, lastAddedKey]);\n\n const handleTextChanged = (key: string, value: string) => {\n const _texts = [...texts];\n for (const text of _texts) {\n if (text.key === key) {\n text.value = value;\n }\n }\n onTextsChanged(_texts);\n };\n\n const handleTextAdded = (key: string) => {\n const initialText = initialTexts.find(txt => txt.key === key);\n onTextsChanged([...texts, { key, value: initialText?.value || \"\" }]);\n setLastAddedKey(key);\n };\n\n const handleRemoveText = (key: string) => {\n onTextsChanged(texts.filter(text => text.key !== key));\n };\n\n const filterSuggestions = (record: SupportedTextRecord): boolean => {\n if (searchFilter && searchFilter.length > 0) {\n const lowercase = searchFilter.toLocaleLowerCase();\n const label = record.label || \"\";\n\n return (\n record.key.toLocaleLowerCase().includes(lowercase) ||\n label.toLocaleLowerCase().includes(lowercase)\n );\n }\n return true;\n };\n\n const filteredItems: SupportedTextRecord[] = useMemo(() => {\n\n const shownTextCategory = [category];\n if (category === TextRecordCategory.General) {\n // We also show image records under general\n shownTextCategory.push(TextRecordCategory.Image);\n }\n\n return supportedTexts.filter(record => filterSuggestions(record) && shownTextCategory.includes(record.category));\n }, [searchFilter]);\n\n if (filteredItems.length === 0) {\n return <></>;\n }\n\n return (\n <div className=\"ns-text-records\">\n <Text className=\"ns-mb-2\" weight=\"bold\">\n {capitalize(category)}\n </Text>\n {filteredItems\n .filter(record => existingTextsMap[record.key] !== undefined)\n .map(record => {\n const current = existingTextsMap[record.key];\n\n return (\n <div key={record.key} style={{ marginBottom: 10 }}>\n <Text\n style={{ marginBottom: \"4px\" }}\n color=\"grey\"\n size=\"xs\"\n weight=\"medium\"\n >\n {record.label}\n </Text>\n <div\n style={{ width: \"100%\" }}\n className=\"d-flex align-items-center\"\n >\n <Input\n ref={(el: HTMLInputElement | null) => {\n inputRefs.current[record.key] = el;\n }}\n style={{ width: \"100%\" }}\n onChange={e => handleTextChanged(record.key, e.target.value)}\n prefix={<Icon name={record.icon} size={18} color=\"grey\" />}\n value={current.value}\n placeholder={record.placeholder}\n />\n <div\n onClick={() => handleRemoveText(record.key)}\n className=\"ns-close-icon ns-ms-1\"\n >\n <Icon name=\"x\" size={18} />\n </div>\n </div>\n </div>\n );\n })}\n <div className=\"row g-2\">\n {filteredItems\n .filter(\n record =>\n existingTextsMap[record.key] === undefined &&\n record.category !== TextRecordCategory.Image &&\n filterSuggestions(record)\n )\n .map(record => (\n <div key={record.key} className=\"col col-lg-3 col-sm-6\">\n <div\n className=\"ns-text-suggestion\"\n onClick={() => handleTextAdded(record.key)}\n >\n <Icon size={18} color=\"grey\" name={record.icon} />\n <Text className=\"ns-mt-1\" size=\"xs\" weight=\"medium\">\n {record.label}\n </Text>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import { EnsAddressRecord } from \"@/types\";\nimport { supportedAddresses, SupportedEnsAddress } from \"@/constants\";\nimport { ChainIcon, Icon, Input, Text } from \"@/components/atoms\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\ninterface AddressRecordProps {\n initialAddresses: EnsAddressRecord[];\n addresses: EnsAddressRecord[];\n onAddressesChanged: (addresses: EnsAddressRecord[]) => void;\n searchFilter?: string;\n}\n\nexport const AddressRecords = ({\n addresses,\n onAddressesChanged,\n initialAddresses,\n searchFilter,\n}: AddressRecordProps) => {\n const existingAddressMap = useMemo(() => {\n const map: Record<number, EnsAddressRecord> = {};\n addresses.forEach(addr => {\n map[addr.coinType] = addr;\n });\n return map;\n }, [addresses]);\n\n const [lastAddedKey, setLastAddedKey] = useState<string | null>(null);\n const inputRefs = useRef<Record<string, HTMLInputElement | null>>({});\n\n useEffect(() => {\n if (lastAddedKey && inputRefs.current[lastAddedKey]) {\n inputRefs.current[lastAddedKey]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n inputRefs.current[lastAddedKey]?.focus();\n setLastAddedKey(null);\n }\n }, [addresses, lastAddedKey]);\n\n const handleAddressChanged = (coin: number, value: string) => {\n const _addresses = [...addresses];\n for (const addr of _addresses) {\n if (addr.coinType === coin) {\n addr.value = value;\n }\n }\n onAddressesChanged(_addresses);\n };\n\n const handleAddressAdded = (coin: number) => {\n const initialAddress = initialAddresses.find(i => i.coinType === coin);\n onAddressesChanged([\n ...addresses,\n { coinType: coin, value: initialAddress?.value || \"\" },\n ]);\n setLastAddedKey(`${coin}`);\n };\n\n const handleRemoveAddress = (coin: number) => {\n onAddressesChanged(addresses.filter(addr => addr.coinType !== coin));\n };\n\n const filterAddress = (address: SupportedEnsAddress): boolean => {\n if (searchFilter && searchFilter.length > 0) {\n const lowercase = searchFilter.toLocaleLowerCase();\n return (\n address.chainName.includes(lowercase) ||\n address.label.toLocaleLowerCase().includes(lowercase)\n );\n }\n return true;\n };\n\n const filteredAddresses = useMemo(() => {\n\n return supportedAddresses.filter(record => filterAddress(record));\n },[searchFilter])\n\n if (filteredAddresses.length === 0) {\n return <></>\n }\n\n\n return (\n <div className=\"ns-text-records\">\n <Text className=\"ns-mb-2\" weight=\"bold\">\n Addresses\n </Text>\n {filteredAddresses\n .filter(record => existingAddressMap[record.coinType] !== undefined)\n .map(record => {\n const current = existingAddressMap[record.coinType];\n const isInvalidAddress =\n current.value.length > 0 && !record.validateFunc?.(current.value);\n\n return (\n <div key={record.chainName} style={{ marginBottom: 10 }}>\n <Text\n style={{ marginBottom: \"4px\" }}\n color=\"grey\"\n size=\"xs\"\n weight=\"medium\"\n >\n {record.label}\n </Text>\n <div\n style={{ width: \"100%\" }}\n className=\"d-flex align-items-center\"\n >\n <Input\n ref={(el: HTMLInputElement | null) => {\n inputRefs.current[record.coinType] = el;\n }}\n error={isInvalidAddress}\n style={{ width: \"100%\" }}\n onChange={e =>\n handleAddressChanged(record.coinType, e.target.value)\n }\n prefix={<ChainIcon chain={record.chainName} size={18} />}\n value={current.value}\n placeholder={record.placeholder}\n />\n <div\n onClick={() => handleRemoveAddress(record.coinType)}\n className=\"ns-close-icon ns-ms-1\"\n >\n <Icon name=\"x\" size={18} />\n </div>\n </div>\n {isInvalidAddress && (\n <Text\n size=\"xs\"\n color=\"danger\"\n className=\"ns-mt-1\"\n >{`${record.label} address is not valid`}</Text>\n )}\n </div>\n );\n })}\n <div className=\"row g-2\">\n {filteredAddresses\n .filter(record => existingAddressMap[record.coinType] === undefined)\n .map(record => (\n <div key={record.coinType} className=\"col col-lg-3 col-sm-6\">\n <div\n className=\"ns-text-suggestion\"\n onClick={() => handleAddressAdded(record.coinType)}\n >\n <ChainIcon size={20} chain={record.chainName} />\n <Text className=\"ns-mt-1\" size=\"xs\" weight=\"medium\">\n {record.label}\n </Text>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React, { useRef, useEffect, useState, useCallback } from \"react\";\nimport \"./Dropdown.css\";\n\nexport interface DropdownProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n disabled?: boolean;\n dataTestId?: string;\n closeCallback?: () => void;\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n trigger,\n children,\n placement = \"bottom\",\n align = \"start\",\n disabled = false,\n dataTestId,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const triggerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const handleToggle = useCallback(() => {\n if (!disabled) {\n setIsOpen(prev => !prev);\n }\n }, [disabled]);\n\n const handleClickOutside = useCallback((event: MouseEvent) => {\n if (\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", e => {\n if (e.key === \"Escape\") setIsOpen(false);\n });\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen, handleClickOutside]);\n\n const getPlacementClasses = () => {\n const placementClass = `ns-dropdown--${placement}`;\n const alignClass = `ns-dropdown--align-${align}`;\n return `${placementClass} ${alignClass}`;\n };\n\n return (\n <div className=\"ns-dropdown\" data-test-id={dataTestId}>\n <div\n ref={triggerRef}\n className=\"ns-dropdown__trigger\"\n onClick={handleToggle}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n onKeyDown={e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleToggle();\n }\n }}\n >\n {trigger}\n </div>\n {isOpen && (\n <div\n ref={dropdownRef}\n className={`ns-dropdown__menu ${getPlacementClasses()}`}\n role=\"menu\"\n aria-orientation=\"vertical\"\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","interface IpfsIconProps {\n size?: number;\n}\n\nexport const IpfsIcon = ({ size = 20 }: IpfsIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 20 22\"\n fill=\"none\"\n >\n <path\n fill=\"#469EA2\"\n d=\"m0 16.44 9.56 5.48 9.559-5.48V5.48L9.559 0 0 5.48z\"\n ></path>\n <path\n fill=\"#6ACAD1\"\n d=\"M8.58 1.31 1.64 5.289a2 2 0 0 1 0 .373l6.93 3.977a1.66 1.66 0 0 1 1.97 0l6.93-3.977a2 2 0 0 1 0-.373l-6.92-3.977a1.66 1.66 0 0 1-1.968 0m9.56 5.447-6.942 4.023c.038.348-.036.7-.212 1.005a1.67 1.67 0 0 1-.766.69l.011 7.91q.17.073.319.18l6.93-3.978c-.037-.348.037-.7.213-1.005s.444-.545.766-.69V6.939a2.3 2.3 0 0 1-.319-.181M.98 6.802q-.15.107-.319.181v7.955c.326.139.598.38.775.685.176.306.248.66.204 1.01l6.93 3.977q.15-.107.32-.18v-7.955a1.63 1.63 0 0 1-.775-.686 1.6 1.6 0 0 1-.205-1.01z\"\n ></path>\n <path\n fill=\"#469EA2\"\n d=\"m9.56 1.186 8.546 4.904v9.797L9.56 20.791l-8.547-4.904V6.079zm0-1.163L0 5.503v10.96l9.56 5.48 9.559-5.48V5.503z\"\n ></path>\n <path\n fill=\"#469EA2\"\n d=\"M9.628 12.825H9.49a1.8 1.8 0 0 1-1.264-.518 1.77 1.77 0 0 1-.522-1.256v-.136a1.76 1.76 0 0 1 .521-1.255 1.78 1.78 0 0 1 1.265-.519h.137a1.8 1.8 0 0 1 1.265.519 1.77 1.77 0 0 1 .521 1.255v.136a1.76 1.76 0 0 1-.521 1.256 1.78 1.78 0 0 1-1.265.518m0 7.288H9.49a1.79 1.79 0 0 0-1.559.904l1.628.927 1.627-.927a1.79 1.79 0 0 0-1.56-.904m9.502-5.48h-.068a1.8 1.8 0 0 0-1.265.518 1.77 1.77 0 0 0-.522 1.256v.135a1.7 1.7 0 0 0 .228.86l1.627-.939zM17.503 4.576a1.73 1.73 0 0 0-.228.859v.136a1.76 1.76 0 0 0 .522 1.255 1.78 1.78 0 0 0 1.265.519h.068V5.503zM9.56.023 7.932.949a1.78 1.78 0 0 0 1.56.915h.136A1.79 1.79 0 0 0 11.187.96zM1.627 4.565 0 5.503v1.842h.068a1.8 1.8 0 0 0 1.265-.519 1.77 1.77 0 0 0 .522-1.255v-.136a1.9 1.9 0 0 0-.228-.87M.068 14.633H0v1.83l1.627.938a1.73 1.73 0 0 0 .228-.859v-.135a1.76 1.76 0 0 0-.522-1.256 1.78 1.78 0 0 0-1.265-.518\"\n ></path>\n <path\n fill=\"#083B54\"\n fillOpacity=\"0.15\"\n d=\"M9.56 22V11.028L0 5.548V16.52z\"\n ></path>\n <path\n fill=\"#083B54\"\n fillOpacity=\"0.05\"\n d=\"M19.13 16.418V5.458l-9.56 5.48V21.91z\"\n ></path>\n </svg>\n );\n};\n","interface OnionIconProps {\n size?: number;\n}\n\nexport const OnionIcon = ({ size = 20 }: OnionIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size * 1.18}\n data-name=\"Layer 1\"\n viewBox=\"0 0 161 190\"\n >\n <path\n fill=\"#7D50CF\"\n d=\"M141.67 74.68c-16.3-17.8-41.29-40.85-44-52.41S102.17 0 102.17 0C90.76-.21 84.29 5.54 80.56 12.07 76.9 5.54 70.36-.21 59 0c0 0 7.25 10.62 4.52 22.26s-27.77 34.62-44 52.43c-45.45 49.76-6 115.82 61 115.82s106.53-66.06 61.15-115.83M80.56 175.29c-27 0-57.73-14.51-64.55-43.81-7.76-34.25 25.77-55.29 45.59-75.9l3.23 3.24c1.73 1.65 3.45 3.37 5.25 5-1.44 1.44-2.88 2.8-4.17 4.09C49.47 84 21 102.33 27.21 128.68c5.53 23.63 31.81 34.69 53.35 34.69s47.82-11.06 53.35-34.69c6.18-26.35-22.26-44.73-38.7-60.75C87.45 60.32 79.7 52.57 72 44.81a95 95 0 0 0 8.41-10.05l.14-.14.14.14c20.76 30.09 74.25 54.57 64.49 96.72-6.89 29.3-37.55 43.81-64.62 43.81m20.54-66.14a48 48 0 0 0-4.46-4.67l8.36-8.76c12.07 12.35 23.56 27.79 5.82 42.87-7.68 6.54-19.24 9.48-30.37 9.48s-22.62-2.94-30.31-9.48c-17.8-15.15-6.1-30.66 6-43.08l8.33 8.83a37.3 37.3 0 0 0-4.67 4.81c-13.14 16.3 6.1 26.43 20.61 26.43s33.83-10.13 20.69-26.43m-10.7 10.63a19.71 19.71 0 0 1-19.61-.07l4.1-23.41a11.62 11.62 0 1 1 17.3-10.13 11.44 11.44 0 0 1-6 10.13z\"\n ></path>\n </svg>\n );\n};\n","interface ArweaveIconProps {\n size?: number;\n}\n\nexport const ArweaveIcon = ({ size = 20 }: ArweaveIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n width={size}\n height={size}\n viewBox=\"0 0 31.8 31.8\"\n >\n <circle\n cx=\"15.9\"\n cy=\"15.9\"\n r=\"14.7\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"arweave_svg__st0\"\n />\n <path\n fill=\"currentColor\"\n d=\"M18.7 21.2c-.1-.1-.1-.3-.2-.5 0-.2-.1-.4-.1-.6-.2.2-.4.3-.6.5s-.5.3-.7.4c-.3.1-.5.2-.9.3-.3.1-.7.1-1 .1-.6 0-1.1-.1-1.6-.3s-.9-.4-1.3-.7-.6-.7-.8-1.1-.3-.9-.3-1.4c0-1.2.5-2.2 1.4-2.8.9-.7 2.3-1 4.1-1h1.7v-.7c0-.6-.2-1-.5-1.3-.4-.3-.9-.5-1.6-.5-.6 0-1 .1-1.3.4s-.4.6-.4 1h-3c0-.5.1-1 .3-1.4s.5-.8 1-1.2c.4-.3.9-.6 1.5-.8q.9-.3 2.1-.3c.7 0 1.3.1 1.9.3s1.1.4 1.6.8c.4.3.8.8 1 1.3s.4 1.1.4 1.8v5c0 .6 0 1.1.1 1.5s.2.8.3 1v.2zm-2.9-2.1c.3 0 .6 0 .8-.1.3-.1.5-.2.7-.3s.4-.2.5-.4l.4-.4v-2h-1.5c-.5 0-.9 0-1.2.1s-.6.2-.8.4-.4.3-.5.6c-.1.2-.1.5-.1.7 0 .4.1.7.4 1s.8.4 1.3.4\"\n className=\"arweave_svg__st1\"\n />\n </svg>\n );\n};\n","interface SkynetIconProps {\n size?: number;\n}\n\nexport const SkynetIcon = ({ size = 20 }: SkynetIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n style={{ color: \"rgb(0, 198, 94)\" }}\n >\n <path\n fill=\"#00c65e\"\n d=\"m0 6.46 21.389 11.297a.917.917 0 0 1 .2 1.485h-.011a10 10 0 0 1-2.234 1.53c-6.912 3.474-14.991-1.837-14.543-9.56l2.86 1.975c.856 4.508 5.618 7.11 9.874 5.393zm8.647 3.151 14.366 5.679a.87.87 0 0 1 .52 1.046v.018a.872.872 0 0 1-1.257.526zm5.29-7.437c2.71-.233 6.095.787 8.111 3.387 1.7 2.195 2.05 4.877 1.93 7.646V13.2a.878.878 0 0 1-1.197.745l-9.765-3.86 9.065 2.432a7.3 7.3 0 0 0-1.068-4.563c-2.968-4.768-9.984-4.535-12.63.42a8 8 0 0 0-.397.883L5.555 7.961q.104-.15.214-.296c.116-.241.242-.487.38-.727 1.612-2.79 4.31-4.433 7.156-4.697.21-.018.421-.049.632-.067z\"\n />\n </svg>\n );\n};\n","interface SwarmIconProps {\n size?: number;\n}\n\nexport const SwarmIcon = ({ size = 20 }: SwarmIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size * 1.03}\n fill=\"none\"\n >\n <g fill=\"#FF8A00\">\n <path d=\"m0 30.47 8.02 4.502 8.022-4.502v-8.986L8.02 16.977 0 21.484zM26.516.03l-4.24 2.381-.006.036v4.758l4.246 2.382.036.017 4.24-2.376V2.43zM34.4 21.484l-8.02-4.507-8.022 4.507v8.986l8.021 4.502L34.4 30.47z\" />\n <path d=\"m17.137 1.285-8.01 4.502v8.986l8.022 4.501 8.02-4.501v-3.58l-3.905-2.19-1.054-.59V3.119z\" />\n </g>\n </svg>\n );\n};\n","import { ContenthashProtocol } from \"@/types\";\nimport { IpfsIcon } from \"./icons/IpfsIcon\";\nimport { OnionIcon } from \"./icons/OnionIcon\";\nimport { ArweaveIcon } from \"./icons/ArweaveIcon\";\nimport { SkynetIcon } from \"./icons/SkynetIcon\";\nimport { SwarmIcon } from \"./icons/SwarmIcon\";\n\ninterface ContenthashIconProps extends React.SVGProps<SVGSVGElement> {\n protocol: ContenthashProtocol;\n size?: number;\n}\n\nconst icons: Record<ContenthashProtocol, React.FC<{ size?: number }>> = {\n [ContenthashProtocol.Ipfs]: IpfsIcon,\n [ContenthashProtocol.Onion]: OnionIcon,\n [ContenthashProtocol.Arweave]: ArweaveIcon,\n [ContenthashProtocol.Skynet]: SkynetIcon,\n [ContenthashProtocol.Swarm]: SwarmIcon,\n};\n\nexport const ContenthashIcon = (props: ContenthashIconProps) => {\n const { className, size, protocol, ...restProps } = props;\n const _size = size || 20;\n const IconComponent = icons[protocol];\n\n if (!IconComponent) {\n console.warn(`No icon found for protocol: ${protocol}`);\n return null;\n }\n\n return (\n <div className={`ns-chain-icon ${className || \"\"}`}>\n <IconComponent size={_size} />\n </div>\n );\n};\n","import React from \"react\";\nimport { Icon, IconName } from \"@/components/atoms/icon/Icon\";\nimport \"./Alert.css\";\n\nexport type AlertVariant = \"error\" | \"warning\" | \"info\" | \"success\";\n\nexport interface AlertProps {\n variant?: AlertVariant;\n children: React.ReactNode;\n className?: string;\n onClose?: () => void;\n dismissible?: boolean;\n title?: string;\n}\n\nconst variantConfig: Record<AlertVariant, { icon: IconName; colorClass: string }> = {\n error: { icon: \"x-circle\", colorClass: \"ns-alert-error\" },\n warning: { icon: \"alert-triangle\", colorClass: \"ns-alert-warning\" },\n info: { icon: \"info\", colorClass: \"ns-alert-info\" },\n success: { icon: \"check-circle\", colorClass: \"ns-alert-success\" },\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = \"info\",\n children,\n className = \"\",\n onClose,\n dismissible = false,\n title,\n}) => {\n const config = variantConfig[variant];\n \n return (\n <div className={`ns-alert ${config.colorClass} ${className}`} role=\"alert\">\n <div className=\"ns-alert-content\">\n <div className=\"ns-alert-icon\">\n <Icon name={config.icon} size={20} />\n </div>\n <div className=\"ns-alert-message\">\n {title && <div className=\"ns-alert-title\">{title}</div>}\n <div className=\"ns-alert-description\">{children}</div>\n </div>\n {dismissible && onClose && (\n <button\n className=\"ns-alert-close\"\n onClick={onClose}\n aria-label=\"Close alert\"\n type=\"button\"\n >\n <Icon name=\"x\" size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Alert;\n","import React, { useEffect, useRef } from \"react\";\nimport \"./Modal.css\";\nimport { Button, Text } from \"@/components/atoms\"; // alias imports [[memory:7847985]]\n\nexport type ModalSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n children: React.ReactNode;\n /** Optional footer content. If not provided, a default Close button is shown. */\n footer?: React.ReactNode;\n /** Width preset for the dialog */\n size?: ModalSize;\n /** Disable closing on overlay click and Escape */\n isDismissDisabled?: boolean;\n /** Optional id for the title element to improve accessibility */\n titleId?: string;\n /** Additional className for the container */\n className?: string;\n /** Optional styles for the dialog container */\n style?: React.CSSProperties;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n footer,\n size = \"md\",\n isDismissDisabled,\n titleId,\n className = \"\",\n style,\n}) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const dialogRef = useRef<HTMLDivElement>(null);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen || isDismissDisabled) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, isDismissDisabled, onClose]);\n\n const handleOverlayClick: React.MouseEventHandler<HTMLDivElement> = e => {\n if (isDismissDisabled) return;\n if (e.target === overlayRef.current) onClose();\n };\n\n if (!isOpen) return null;\n\n const sizeClass = `ns-modal--${size}`;\n const classes = [\"ns-modal\", className, sizeClass].filter(Boolean).join(\" \");\n\n return (\n <div\n ref={overlayRef}\n className=\"ns-modal-overlay\"\n onMouseDown={handleOverlayClick}\n aria-hidden={!isOpen}\n >\n <div\n ref={dialogRef}\n className={classes}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? (titleId || \"ns-modal-title\") : undefined}\n style={style}\n >\n {(title || !isDismissDisabled) && (\n <div className=\"ns-modal__header\">\n {title && (\n <div className=\"ns-modal__title\" id={titleId || \"ns-modal-title\"}>\n {typeof title === \"string\" ? (\n <Text size=\"lg\" weight=\"medium\">{title}</Text>\n ) : (\n title\n )}\n </div>\n )}\n {!isDismissDisabled && (\n <button className=\"ns-modal__close\" aria-label=\"Close\" onClick={onClose}>\n ×\n </button>\n )}\n </div>\n )}\n\n <div className=\"ns-modal__body\">{children}</div>\n\n <div className=\"ns-modal__footer\">\n {footer !== undefined ? footer : (\n <Button variant=\"outline\" onClick={onClose}>Close</Button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n\n\n","import { Input, Text, Icon } from \"@/components/atoms\";\nimport { ContenthashIcon } from \"@/components/molecules\";\nimport {\n getSupportedChashByProtocol,\n isContenthashValid,\n SupportedContenthashRecord,\n supportedContenthashRecords,\n} from \"@/constants\";\nimport { ContenthashProtocol, EnsContenthashRecord } from \"@/types\";\nimport { useMemo } from \"react\";\n\ninterface ContenthashRecordProps {\n contenthash?: EnsContenthashRecord;\n onContenthashChanged: (value: EnsContenthashRecord) => void;\n onContenthashRemoved: () => void;\n onContenthashAdded: (protocol: ContenthashProtocol) => void;\n searchFilter?: string;\n}\n\nexport const ContenthashRecord = ({\n contenthash,\n onContenthashChanged,\n onContenthashRemoved,\n onContenthashAdded,\n searchFilter,\n}: ContenthashRecordProps) => {\n const metadata = useMemo<SupportedContenthashRecord | undefined>(() => {\n if (contenthash?.protocol) {\n return getSupportedChashByProtocol(contenthash?.protocol);\n }\n }, [contenthash]);\n\n const handleContenthashChanged = (\n protocol: ContenthashProtocol,\n value: string\n ) => {\n onContenthashChanged({ protocol, value });\n };\n\n const filterChash = (record: SupportedContenthashRecord): boolean => {\n if (searchFilter && searchFilter.length > 0) {\n const lowercase = searchFilter.toLocaleLowerCase();\n return (\n record.protocol.toLocaleLowerCase().includes(lowercase) ||\n record.label.toLocaleLowerCase().includes(lowercase)\n );\n }\n\n return true;\n };\n\n const filteredSuggestions: SupportedContenthashRecord[] = useMemo(() => {\n return supportedContenthashRecords.filter(record => filterChash(record));\n }, [searchFilter]);\n\n if (filteredSuggestions.length === 0) {\n return <></>;\n }\n\n return (\n <div className=\"ns-text-records\">\n <Text className=\"ns-mb-2\" weight=\"bold\">\n Website\n </Text>\n {!contenthash && (\n <div className=\"row g-2\">\n {filteredSuggestions.map(record => (\n <div key={record.protocol} className=\"col col-lg-3 col-sm-6\">\n <div\n className=\"ns-text-suggestion\"\n onClick={() => onContenthashAdded(record.protocol)}\n >\n <ContenthashIcon size={20} protocol={record.protocol} />\n <Text className=\"ns-mt-1\" size=\"xs\" weight=\"medium\">\n {record.label}\n </Text>\n </div>\n </div>\n ))}\n </div>\n )}\n {contenthash && metadata && filterChash(metadata) && (\n <div>\n <Text\n style={{ marginBottom: \"4px\" }}\n color=\"grey\"\n size=\"xs\"\n weight=\"medium\"\n >\n {metadata.label}\n </Text>\n <div style={{ width: \"100%\" }} className=\"d-flex align-items-center\">\n <Input\n style={{ width: \"100%\" }}\n onChange={e =>\n handleContenthashChanged(contenthash.protocol, e.target.value)\n }\n error={\n contenthash.value.length > 0 &&\n !isContenthashValid(contenthash.protocol, contenthash.value)\n }\n prefix={\n <ContenthashIcon protocol={contenthash.protocol} size={18} />\n }\n value={contenthash.value}\n placeholder={`${contenthash.protocol}://`}\n />\n <div\n onClick={() => onContenthashRemoved()}\n className=\"ns-close-icon ns-ms-1\"\n >\n <Icon name=\"x\" size={18} />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import { useEffect } from \"react\";\nimport \"./ImageRecords.css\";\nimport { Dropdown } from \"@/components/molecules\";\nimport { Icon, Text } from \"@/components/atoms\";\n\ninterface ImageRecordProps {\n avatar?: string;\n header?: string;\n onAvatarAdded: (value: string) => void;\n onHeaderAdded: (value: string) => void;\n}\n\nconst commonBgStyles = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n};\n\nexport const ImageRecords = ({\n avatar,\n header,\n onAvatarAdded,\n onHeaderAdded,\n}: ImageRecordProps) => {\n // load avatar here\n useEffect(() => {}, [avatar]);\n\n let avatarStyles = {};\n if (avatar && avatar.length > 0) {\n avatarStyles = {\n backgroundImage: `url(${avatar})`,\n ...commonBgStyles,\n };\n }\n\n let headerStyles = {};\n if (header && header.length > 0) {\n headerStyles = {\n backgroundImage: `url(${header})`,\n ...commonBgStyles,\n };\n }\n\n let headerRecordSet = header !== undefined;\n let avatarRecordSet = avatar !== undefined;\n\n return (\n <div className=\"ns-image-records\">\n <div style={headerStyles} className=\"ns-cover-record-cont\">\n <div className=\"ns-top-grad\"></div>\n <div className=\"ns-bot-grad\"></div>\n {!headerRecordSet && <Dropdown\n trigger={\n <div className=\"ns-header-handle\">\n <Icon color=\"white\" name=\"rotate-circle\"></Icon>\n </div>\n }\n >\n <div className=\"ns-upload-options\">\n <Text\n onClick={e => {\n e.stopPropagation();\n if (!headerRecordSet) {\n onHeaderAdded(\"\");\n }\n }}\n weight=\"medium\"\n className=\"option\"\n size=\"sm\"\n >\n Add Header Record\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Upload image\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Select NFT\n </Text>\n </div>\n </Dropdown>}\n <div style={avatarStyles} className=\"ns-avatar-record-cont\">\n {!avatarRecordSet && <Dropdown\n trigger={\n <div className=\"ns-image-handle\">\n <Icon color=\"grey\" name=\"rotate-circle\"></Icon>\n </div>\n }\n >\n <div className=\"ns-upload-options\">\n <Text\n onClick={e => {\n e.stopPropagation();\n if (!avatarRecordSet) {\n onAvatarAdded(\"\");\n }\n }}\n weight=\"medium\"\n className=\"option\"\n size=\"sm\"\n >\n Add Avatar Record\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Upload image\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Select NFT\n </Text>\n </div>\n </Dropdown>}\n </div>\n </div>\n </div>\n );\n};\n","import { RefObject, useMemo, useRef, useState } from \"react\";\nimport {\n ContenthashProtocol,\n EnsAddressRecord,\n EnsContenthashRecord,\n EnsRecords,\n EnsTextRecord,\n} from \"@/types\";\nimport { Icon, Input, Text } from \"../atoms\";\nimport { TextRecords } from \"./text-records/TextRecords\";\nimport { AddressRecords } from \"./address-record/AddressRecords\";\nimport { ContenthashRecord } from \"./contenthash-records/ContenthashRecord\";\nimport \"./SelectRecordsForm.css\";\nimport { RecordsAddedParams } from \"./records-selector/RecordsSelector\";\nimport { ImageRecords } from \"./image-records/ImageRecords\";\nimport { deepCopy } from \"@/utils\";\nimport { TextRecordCategory } from \"@/constants\";\n\nenum RecordsSidebarItem {\n General = \"General\",\n Social = \"Social\",\n Addresses = \"Addresses\",\n Website = \"Website\",\n}\n\nexport interface SelectRecordsFormProps {\n records: EnsRecords;\n onRecordsUpdated: (records: EnsRecords) => void;\n}\n\nexport const SelectRecordsForm = ({\n records,\n onRecordsUpdated,\n}: SelectRecordsFormProps) => {\n const [initialRecords] = useState<EnsRecords>(deepCopy(records));\n\n const generalCategoryRef = useRef<HTMLDivElement | null>(null);\n const socialCategoryRef = useRef<HTMLDivElement | null>(null);\n const addressesCategoryRef = useRef<HTMLDivElement | null>(null);\n const websiteCategoryRef = useRef<HTMLDivElement | null>(null);\n const [searchFilter, setSearchFilter] = useState(\"\");\n\n const [currentNav, setCurrentNav] = useState<RecordsSidebarItem>(\n RecordsSidebarItem.General\n );\n\n const handleTextsUpdated = (texts: EnsTextRecord[]) => {\n onRecordsUpdated({ ...records, texts });\n };\n\n const handleAddressesUpdated = (addresses: EnsAddressRecord[]) => {\n onRecordsUpdated({ ...records, addresses });\n };\n\n const scrollToCategory = (category: RecordsSidebarItem) => {\n const references: Record<\n RecordsSidebarItem,\n RefObject<HTMLDivElement | null>\n > = {\n General: generalCategoryRef,\n Social: socialCategoryRef,\n Website: websiteCategoryRef,\n Addresses: addressesCategoryRef,\n };\n\n const currentRef = references[category];\n\n if (currentRef && currentRef.current) {\n currentRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n };\n\n const handleSidebarChange = (\n nav: RecordsSidebarItem,\n scroll: boolean = true\n ) => {\n setCurrentNav(nav);\n if (scroll) {\n scrollToCategory(nav);\n }\n };\n\n const handleContenthashAdded = (protocol: ContenthashProtocol) => {\n const oldContenthash = initialRecords.contenthash;\n\n let value = \"\";\n if (oldContenthash && oldContenthash.protocol === protocol) {\n value = oldContenthash.value;\n }\n onRecordsUpdated({ ...records, contenthash: { protocol, value } });\n };\n\n const handleRecordsAdded = (params: RecordsAddedParams) => {\n const newTexts = [...records.texts];\n if (params.keys.length > 0) {\n params.keys.forEach(key => {\n // If someone removes text thats initialy existed\n // and readed it, let also set the initial value\n const initialValue = initialRecords.texts.find(txt => txt.key === key);\n newTexts.push({\n key: key,\n value: initialValue ? initialValue.value : \"\",\n });\n });\n }\n const newAddresses = [...records.addresses];\n if (params.coins.length > 0) {\n params.coins.forEach(coin => {\n const initialValue = initialRecords.addresses.find(\n addr => addr.coinType === coin\n );\n newAddresses.push({\n coinType: coin,\n value: initialValue ? initialValue.value : \"\",\n });\n });\n }\n\n let newContenthash = records.contenthash\n ? { ...records.contenthash }\n : undefined;\n\n if (params.contenthash?.protocol) {\n const value = initialRecords.contenthash?.value || \"\";\n newContenthash = {\n protocol: params.contenthash.protocol,\n value: value,\n };\n }\n onRecordsUpdated({\n texts: newTexts,\n addresses: newAddresses,\n contenthash: newContenthash,\n });\n };\n\n const { avatar, header } = useMemo(() => {\n return {\n avatar: records.texts.find(r => r.key === \"avatar\")?.value,\n header: records.texts.find(r => r.key === \"header\")?.value,\n };\n }, [records.texts]);\n\n const handleContenthashUpdated = (contenthash: EnsContenthashRecord) => {\n onRecordsUpdated({ ...records, contenthash });\n };\n\n const handleContenthashRemoved = () => {\n const _records = { ...records };\n delete _records.contenthash;\n onRecordsUpdated(_records);\n };\n\n const handleImageRecordAdded = (\n record: \"avatar\" | \"header\",\n value: string\n ) => {\n const _texts = records.texts.filter(text => text.key !== record);\n\n let _value = value;\n if (_value.length === 0) {\n const initialValue = initialRecords.texts.find(txt => txt.key === record);\n _value = initialValue ? initialValue.value : value;\n }\n\n onRecordsUpdated({\n ...records,\n texts: [..._texts, { key: record, value: _value }],\n });\n scrollToCategory(RecordsSidebarItem.General);\n };\n\n return (\n <div className=\"ns-select-records-form\">\n {/* Avatar and header */}\n <div style={{ marginBottom: 30 }}>\n <ImageRecords\n avatar={avatar}\n header={header}\n onAvatarAdded={(value: string) =>\n handleImageRecordAdded(\"avatar\", value)\n }\n onHeaderAdded={(value: string) =>\n handleImageRecordAdded(\"header\", value)\n }\n />\n </div>\n {/* Search Input */}\n <div className=\"ns-records-content-wrapper\">\n <div className=\"ns-records-content row g-2\">\n <div className=\"col-12 ns-mb-1\">\n <Input\n value={searchFilter}\n onChange={e => setSearchFilter(e.target.value)}\n placeholder=\"Search\"\n prefix={<Icon name=\"search\" size={18} />}\n />\n </div>\n {/* Sidebar Navigation */}\n <div className=\"col col-sm-3 col-12 ns-records-sidebar\">\n {Object.keys(RecordsSidebarItem).map(item => {\n return (\n <div\n onClick={() =>\n handleSidebarChange(item as RecordsSidebarItem)\n }\n key={item}\n className={`sidebar-item ${item === currentNav ? \"active\" : \"\"}`}\n >\n <Text weight=\"medium\" size=\"sm\">\n {item}\n </Text>\n </div>\n );\n })}\n </div>\n {/* Record Container */}\n <div className=\"col col-sm-9 col-12 ns-records-inner ns-styled-scrollbar\">\n {/* General Records */}\n <div ref={generalCategoryRef} className=\"ns-mb-2\">\n <TextRecords\n initialTexts={initialRecords.texts}\n texts={records.texts}\n onTextsChanged={handleTextsUpdated}\n category={TextRecordCategory.General}\n searchFilter={searchFilter}\n />\n </div>\n {/* Social Records Records */}\n <div ref={socialCategoryRef} className=\"ns-mb-2\">\n <TextRecords\n initialTexts={initialRecords.texts}\n texts={records.texts}\n onTextsChanged={handleTextsUpdated}\n category={TextRecordCategory.Social}\n searchFilter={searchFilter}\n />\n </div>\n {/* Address Records */}\n <div ref={addressesCategoryRef} className=\"ns-mb-2\">\n <AddressRecords\n initialAddresses={initialRecords.addresses}\n addresses={records.addresses}\n onAddressesChanged={e => handleAddressesUpdated(e)}\n searchFilter={searchFilter}\n />\n </div>\n {/* Contenthash Records */}\n <div ref={websiteCategoryRef} className=\"ns-mb-2\">\n <ContenthashRecord\n contenthash={records.contenthash}\n onContenthashChanged={e => handleContenthashUpdated(e)}\n onContenthashRemoved={() => handleContenthashRemoved()}\n onContenthashAdded={e => handleContenthashAdded(e)}\n searchFilter={searchFilter}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","import { Text, Icon } from \"../atoms\";\nimport \"./PendingTransaction.css\";\n\nexport enum TransactionState {\n InProgress = \"In Progress\",\n Completed = \"Completed\",\n Failed = \"Failed\",\n}\n\ninterface PendingTransactionProps {\n state: TransactionState;\n blockExplorerUrl: string;\n transactionHash?: string;\n className?: string;\n}\n\nexport const PendingTransaction = ({\n state,\n blockExplorerUrl,\n transactionHash,\n className = \"\",\n}: PendingTransactionProps) => {\n const getStatusIcon = () => {\n switch (state) {\n case TransactionState.InProgress:\n return <div className=\"ns-pending-tx__spinner\" />;\n case TransactionState.Completed:\n return <Icon name=\"check-circle\" size={24} />;\n case TransactionState.Failed:\n return <Icon name=\"x-circle\" size={24} />;\n default:\n return null;\n }\n };\n\n const getStatusMessage = () => {\n switch (state) {\n case TransactionState.InProgress:\n return \"Transaction is being executed...\";\n case TransactionState.Completed:\n return \"Transaction completed successfully!\";\n case TransactionState.Failed:\n return \"Transaction failed!\";\n default:\n return \"\";\n }\n };\n\n const getStatusClass = () => {\n switch (state) {\n case TransactionState.InProgress:\n return \"ns-pending-tx--in-progress\";\n case TransactionState.Completed:\n return \"ns-pending-tx--completed\";\n case TransactionState.Failed:\n return \"ns-pending-tx--failed\";\n default:\n return \"\";\n }\n };\n\n const getIconClass = () => {\n switch (state) {\n case TransactionState.InProgress:\n return \"ns-pending-tx__icon--in-progress\";\n case TransactionState.Completed:\n return \"ns-pending-tx__icon--completed\";\n case TransactionState.Failed:\n return \"ns-pending-tx__icon--failed\";\n default:\n return \"\";\n }\n };\n\n return (\n <div className={`ns-pending-tx ${getStatusClass()} ${className}`}>\n <div className=\"ns-pending-tx__content\">\n <div className={`ns-pending-tx__icon ${getIconClass()}`}>\n {getStatusIcon()}\n </div>\n \n <div className=\"ns-pending-tx__status\">\n <Text>{getStatusMessage()}</Text>\n </div>\n \n {transactionHash && (\n <p className=\"ns-pending-tx__message\">\n Hash: {transactionHash.slice(0, 10)}...{transactionHash.slice(-8)}\n </p>\n )}\n \n <a \n href={blockExplorerUrl} \n target=\"_blank\" \n rel=\"noopener noreferrer\"\n className=\"ns-pending-tx__link\"\n >\n <Icon name=\"globe\" size={16} className=\"ns-pending-tx__link-icon\" />\n View on Block Explorer\n </a>\n </div>\n </div>\n );\n};\n","export const useWaitForTransaction = ({ chainId: number}: {chainId: number}) => {\n\n \n\n}","import { usePublicClient, useWalletClient } from \"wagmi\"\n\nexport const useWeb3Client = ({chainId}: {chainId: number}) => {\n\n const publicClient = usePublicClient({chainId})\n const { data: walletClient } = useWalletClient({chainId})\n\n return {\n walletClient,\n publicClient\n }\n}","import { parseAbi } from \"viem\";\n\nexport const SET_TEXT_FUNC = \"function setText(bytes32 node, string key, string value)\";\nexport const SET_ADDRESS_FUNC = \"function setAddr(bytes32 node, uint256 coin, bytes value)\"\nexport const SET_CONTENTHASH_FUNC = \"function setContenthash(bytes32 node, bytes value)\";\nexport const MULTICALL = \"function multicall(bytes[] data)\"\n\nexport const ENS_RESOLVER_ABI = parseAbi([\n SET_TEXT_FUNC,\n SET_ADDRESS_FUNC,\n SET_CONTENTHASH_FUNC,\n MULTICALL\n]);\n","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport \"../styles/global.css\";\n\nexport type ThemeName = \"light\" | \"dark\";\n\nexport interface ThemeContextValue {\n theme: ThemeName;\n setTheme: (theme: ThemeName) => void;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport interface ThemeProviderProps {\n initialTheme?: ThemeName;\n useDocument?: boolean;\n children: React.ReactNode;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n initialTheme = \"light\",\n useDocument = true,\n children,\n}) => {\n const [theme, setTheme] = useState<ThemeName>(initialTheme);\n\n useEffect(() => {\n if (useDocument && typeof document !== \"undefined\") {\n const root = document.documentElement;\n root.setAttribute(\"data-theme\", theme);\n return () => {\n root.removeAttribute(\"data-theme\");\n };\n }\n }, [theme, useDocument]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n setTheme,\n toggleTheme: () => setTheme(t => (t === \"light\" ? \"dark\" : \"light\")),\n }),\n [theme]\n );\n\n if (useDocument) {\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n }\n\n return (\n <ThemeContext.Provider value={value}>\n <div data-theme={theme} className=\"ns-reset\">\n {children}\n </div>\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextValue => {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used within ThemeProvider\");\n return ctx;\n};\n"],"names":["Icon","__iconNode","icons","LucideIcons.MapPin","LucideIcons.Mail","LucideIcons.Image","LucideIcons.CircleUser","LucideIcons.CircleAlert","CheckCircle","AlertTriangle","XCircle","LucideIcons.CircleFadingPlus","isBytes","anumber","bytesToHex","hexToBytes","u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","sha256","sha512_256","_0n","_1n","isBytes_","bytesToHex_","abytes_","hexToBytes_","concatBytes_","_2n","_3n","_4n","_7n","abool","abytes","randomBytesWeb","randomBytes","hmac","nobleHmac","ripemd160","ripemd160n","alphabet","base32","sha256n","name","coinType","prefix","hrp","limit","p2pkhVersions","p2shVersions","bytesToNoPrefixHex","noPrefixHexToBytes","sha512_256n","u64.rotr32H","u64.rotr32L","u64.fromBig","blake2b","b2b","dotType","addressLength","length","checksumLength","formats[\"eth\"]","isAddress","base","ContenthashProtocol","equals","basex","decode","encode","varint","varint.encodingLength","varint.encodeTo","varint.decode","equalBytes","Digest.create","Digest.equals","Digest.decode","Digest.Digest","multihashDecode","createDigest","TextRecordCategory","RecordsSidebarItem","TransactionState"],"mappings":";;;;;;AAeA,MAAM,WAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,MAAM,SAAgC,CAAC;AAAA,EAC5C,OAAA,GAAU,OAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,aAAa,QAAA,IAAY,OAAA;AAE/B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,QAAA;AAAA,IACA,WAAW,OAAO,CAAA,CAAA;AAAA,IAClB,YAAY,IAAI,CAAA;AAAA,IAChB,UAAU,iBAAA,GAAoB,EAAA;AAAA,IAC9B;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACX,QAAA,EAAU,UAAA;AAAA,MACV,iBAAe,UAAA,IAAc,MAAA;AAAA,MAC7B,aAAW,OAAA,IAAW,MAAA;AAAA,MACtB,cAAA,EAAc,UAAA;AAAA,MACb,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,OAAA,oBAAW,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EAAkB,eAAY,MAAA,EAAO,CAAA;AAAA,QAChE,UAAU,CAAC,OAAA,wBAAY,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAkB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,wBAChE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAiB,QAAA,EAAS;AAAA;AAAA;AAAA,GAC5C;AAEJ;;ACzCO,MAAM,KAAA,GAAQ,UAAA;AAAA,EACnB,CACE;AAAA,IACE,IAAA,GAAO,MAAA;AAAA,IACP,IAAA,GAAO,IAAA;AAAA,IACP,MAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,KAAA,GAAQ,KAAA;AAAA,IACR,SAAA,GAAY,EAAA;AAAA,IACZ,UAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,SAAA,GAAY,aAAa,IAAI,CAAA,CAAA;AACnC,IAAA,MAAM,UAAA,GAAa,QAAQ,iBAAA,GAAoB,EAAA;AAC/C,IAAA,MAAM,aAAA,GAAgB,WAAW,oBAAA,GAAuB,EAAA;AAExD,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,UAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,kBAAA,EAAqB,SAAS,CAAA,CAAA,EAC3C,QAAA,EAAA;AAAA,MAAA,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,sBACrD,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA;AAAA,UACA,SAAA,EAAW,OAAA;AAAA,UACX,QAAA;AAAA,UACA,gBAAc,KAAA,IAAS,MAAA;AAAA,UACvB,cAAA,EAAc,UAAA;AAAA,UACb,GAAG;AAAA;AAAA,OACN;AAAA,MACC,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAoB,QAAA,EAAA,MAAA,EAAO;AAAA,KAAA,EACvD,CAAA;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;;ACjDb,MAAM,OAA4B,CAAC;AAAA,EACxC,QAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,MAAA,GAAS,SAAA;AAAA,EACT,KAAA,GAAQ,SAAA;AAAA,EACR,SAAA,GAAY,EAAA;AAAA,EACZ,KAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,SAAA,GAAY,YAAY,IAAI,CAAA,CAAA;AAClC,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM,CAAA,CAAA;AACtC,EAAA,MAAM,UAAA,GAAa,YAAY,KAAK,CAAA,CAAA;AAEpC,EAAA,MAAM,OAAA,GAAU,CAAC,SAAA,EAAW,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,SAAS,CAAA,CACtE,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAW,OAAA,EAAS,OAAc,cAAA,EAAc,UAAA,EAAa,GAAG,IAAA,EAClE,QAAA,EACH,CAAA;AAEJ;;ACtCA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;AAC3F,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO;AAC9C,EAAE,uBAAuB;AACzB,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW;AAC3D,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACjC,EAAE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;AACvC,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK;AACjF,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK;AAC5F,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnB,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AAC/B,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC5B,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AACzE,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE;AACF,CAAC;;ACzBD;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,iBAAiB,GAAG;AACxB,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,EAAE;AACX,EAAE,MAAM,EAAE,EAAE;AACZ,EAAE,OAAO,EAAE,WAAW;AACtB,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,MAAM,EAAE,cAAc;AACxB,EAAE,WAAW,EAAE,CAAC;AAChB,EAAE,aAAa,EAAE,OAAO;AACxB,EAAE,cAAc,EAAE;AAClB,CAAC;;ACjBD;AACA;AACA;AACA;AACA;AACA;;;AAMA,MAAMA,MAAI,GAAG,UAAU;AACvB,EAAE,CAAC;AACH,IAAI,KAAK,GAAG,cAAc;AAC1B,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,WAAW,GAAG,CAAC;AACnB,IAAI,mBAAmB;AACvB,IAAI,SAAS,GAAG,EAAE;AAClB,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,GAAG;AACP,GAAG,EAAE,GAAG,KAAK,aAAa;AAC1B,IAAI,KAAK;AACT,IAAI;AACJ,MAAM,GAAG;AACT,MAAM,GAAG,iBAAiB;AAC1B,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW;AAC9F,MAAM,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC;AAClD,MAAM,GAAG,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE;AACrE,MAAM,GAAG;AACT,KAAK;AACL,IAAI;AACJ,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ;AACvD;AACA;AACA,CAAC;;ACvCD;AACA;AACA;AACA;AACA;AACA;;;AAMA,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;AACjD,EAAE,MAAM,SAAS,GAAG,UAAU;AAC9B,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAK,aAAa,CAACA,MAAI,EAAE;AAC1D,MAAM,GAAG;AACT,MAAM,QAAQ;AACd,MAAM,SAAS,EAAE,YAAY;AAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC5B,QAAQ;AACR,OAAO;AACP,MAAM,GAAG;AACT,KAAK;AACL,GAAG;AACH,EAAE,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC;AAChD,EAAE,OAAO,SAAS;AAClB,CAAC;;AC1BD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMC,YAAU,GAAG;AACnB,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,wFAAwF;AACjG,MAAM,GAAG,EAAE;AACX;AACA;AACA,CAAC;AACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAEA,YAAU,CAAC;;AClBjD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,wHAAwH;AACjI,MAAM,GAAG,EAAE;AACX;AACA,GAAG;AACH,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,oBAAoB,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACtD,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC5C,CAAC;AACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAEA,YAAU,CAAC;;ACpB/C;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACpE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;AACvE,CAAC;AACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAEA,YAAU,CAAC;;ACdhE;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iCAAiC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACnE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE;AACjD,CAAC;AACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,EAAEA,YAAU,CAAC;;ACbvE;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,8BAA8B,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,6BAA6B,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC/D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,+BAA+B,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACjE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,oCAAoC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACtE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,oCAAoC,EAAE,GAAG,EAAE,QAAQ,EAAE;AACrE,CAAC;AACD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,oBAAoB,EAAEA,YAAU,CAAC;;AClB3E;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,kDAAkD,EAAE,GAAG,EAAE,QAAQ,EAAE;AACnF,CAAC;AACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAEA,YAAU,CAAC;;ACd9D;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC7C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC3C,CAAC;AACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,EAAEA,YAAU,CAAC;;ACdxD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iDAAiD,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACnF,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC3C,CAAC;AACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAEA,YAAU,CAAC;;ACdnD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC1F,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACzD,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,2CAA2C,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC5E,CAAC;AACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAEA,YAAU,CAAC;;ACdnD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC7C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC5C,CAAC;AACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAEA,YAAU,CAAC;;ACdjD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,yCAAyC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3E,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AAChF,CAAC;AACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAEA,YAAU,CAAC;;ACbjD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,sGAAsG;AAC/G,MAAM,GAAG,EAAE;AACX;AACA,GAAG;AACH,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC1D,CAAC;AACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAEA,YAAU,CAAC;;ACnBtD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC5C,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,4MAA4M;AACrN,MAAM,GAAG,EAAE;AACX;AACA;AACA,CAAC;AACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAEA,YAAU,CAAC;;ACnB/C;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACpD,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC1D,CAAC;AACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAEA,YAAU,CAAC;;ACbrD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AACjF,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3D,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,0CAA0C,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC3E,CAAC;AACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,aAAa,EAAEA,YAAU,CAAC;;ACd9D;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE;AACF,IAAI,MAAM;AACV,IAAI;AACJ,MAAM,CAAC,EAAE,0EAA0E;AACnF,MAAM,GAAG,EAAE;AACX;AACA,GAAG;AACH,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC7C,CAAC;AACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,EAAEA,YAAU,CAAC;;ACpBpE;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAMA,YAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,2CAA2C,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC7E,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;AACzD,CAAC;AACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAEA,YAAU,CAAC;;ACbjD;AACA;AACA;AACA;AACA;AACA;;;AAIA,MAAM,UAAU,GAAG;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC9C,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE;AAC7C,CAAC;AACD,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC;;ACPpC,MAAM,cAA0C,CAAC;AAAA,EACtD,IAAA,GAAO,EAAA;AAAA,EACP,GAAG;AACL,CAAA,qBACE,GAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAQ,WAAA;AAAA,IACR,MAAM,KAAA,CAAM,KAAA;AAAA,IACZ,KAAA,EAAM,4BAAA;AAAA,IACL,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,oqBAAA,EAAqqB;AAAA;AAC/qB,CAAA;;ACbK,MAAM,aAAwC,CAAC;AAAA,EACpD,IAAA,GAAO,EAAA;AAAA,EACP,GAAG;AACL,CAAA,qBACE,GAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACP,GAAG,KAAA;AAAA,IACJ,KAAA,EAAM,4BAAA;AAAA,IACN,OAAA,EAAQ,WAAA;AAAA,IACR,MAAM,KAAA,CAAM,KAAA;AAAA,IAEZ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0sBAAA,EAA2sB;AAAA;AACrtB,CAAA;;ACbK,MAAM,eAA4C,CAAC;AAAA,EACxD,IAAA,GAAO,EAAA;AAAA,EACP,GAAG;AACL,CAAA,qBACE,IAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,MAAM,KAAA,CAAM,KAAA;AAAA,IACZ,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACP,GAAG,KAAA;AAAA,IACJ,OAAA,EAAQ,WAAA;AAAA,IAER,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,UAAS,6BAAA,EACV,QAAA,kBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,WAAA,EAAU,SAAA;AAAA,UACV,CAAA,EAAE,6nBAAA;AAAA,UACF,WAAA,EAAU;AAAA;AAAA,OACX,EACH,CAAA;AAAA,sBACA,GAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAS,IAAG,uBAAA,EACX,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,IAAA,EAAM,KAAA,CAAM,KAAA,EAAO,CAAA,EAAE,eAAA,EAAgB,GAC7C,CAAA,EACF;AAAA;AAAA;AACF,CAAA;;ACxBK,MAAM,cAA0C,CAAC;AAAA,EACtD,IAAA,GAAO,EAAA;AAAA,EACP,GAAG;AACL,CAAA,qBACE,IAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,KAAA,EAAM,4BAAA;AAAA,IACL,GAAG,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,2cAAA;AAAA,UACF,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,GAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA,OACjB;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,sCAAA;AAAA,UACF,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,GAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA;AACF,CAAA;;AC1BK,MAAM,QAA8B,CAAC,EAAE,OAAO,EAAA,EAAI,GAAG,OAAM,qBAChE,GAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAO,IAAA;AAAA,IACP,MAAA,EAAQ,IAAA;AAAA,IACR,OAAA,EAAQ,WAAA;AAAA,IACR,MAAM,KAAA,CAAM,KAAA;AAAA,IACZ,KAAA,EAAM,4BAAA;AAAA,IACL,GAAG,KAAA;AAAA,IAEJ,QAAA,kBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,SAAA;AAAA,QACL,CAAA,EAAE;AAAA;AAAA;AACH;AACH,CAAA;;ACwCF,MAAMC,OAAA,GAAyC;AAAA,EAC7C,MAAA,EAAQ,IAAA;AAAA,EACR,CAAA,EAAG,CAAA;AAAA,EACH,MAAA,EAAQ,MAAA;AAAA,EACR,aAAA,EAAe,UAAA;AAAA,EACf,KAAA,EAAO,KAAA;AAAA,EACP,GAAA,EAAK,GAAA;AAAA,EACL,GAAA,EAAK,GAAA;AAAA,EACL,IAAA,EAAM,IAAA;AAAA,EACN,WAAWC,MAAY;AAAA,EACvB,MAAMC,IAAY;AAAA,EAClB,OAAA,EAAS,WAAA;AAAA,EACT,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA,EAAU,YAAA;AAAA,EACV,OAAA,EAAS,WAAA;AAAA,EACT,OAAOC,KAAY;AAAA,EACnB,iBAAiBC,UAAY;AAAA,EAC7B,OAAA,EAAS,KAAA;AAAA,EACT,gBAAgBC,WAAY;AAAA,EAC5B,cAAA,EAAgBC,cAAA;AAAA,EAChB,gBAAA,EAAkBC,aAAA;AAAA,EAClB,IAAA,EAAM,IAAA;AAAA,EACN,UAAA,EAAYC,OAAA;AAAA,EACZ,iBAAiBC;AACnB,CAAA;AAUO,MAAM,OAA4B,CAAC;AAAA,EACxC,IAAA;AAAA,EACA,KAAA,GAAQ,cAAA;AAAA,EACR,IAAA,GAAO,EAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,aAAA,GAAgBT,QAAM,IAAI,CAAA;AAEhC,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,IAAI,CAAA,oBAAA,CAAsB,CAAA;AAChD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA,EAAW,WAAW,SAAS,CAAA,CAAA;AAAA,MAC/B,cAAA,EAAc;AAAA;AAAA,GAChB;AAEJ;;AC1GO,MAAM,YAAsC,CAAC;AAAA,EAClD,KAAA;AAAA,EACA,IAAA,GAAO,EAAA;AAAA,EACP,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,KAAA;AACH,QAAA,uBACE,IAAA,CAAC,GAAA,EAAA,EAAE,QAAA,EAAS,sBAAA,EACV,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,oLAAA;AAAA,cACF,IAAA,EAAK;AAAA;AAAA,WACP;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,2DAAA;AAAA,cACF,IAAA,EAAK,OAAA;AAAA,cACL,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,2DAAA;AAAA,cACF,IAAA,EAAK;AAAA;AAAA,WACP;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,2DAAA;AAAA,cACF,IAAA,EAAK,OAAA;AAAA,cACL,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,2DAAA;AAAA,cACF,IAAA,EAAK;AAAA;AAAA,WACP;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,2DAAA;AAAA,cACF,IAAA,EAAK,OAAA;AAAA,cACL,WAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,2DAAA;AAAA,cACF,IAAA,EAAK,OAAA;AAAA,cACL,WAAA,EAAY;AAAA;AAAA;AACd,SAAA,EACF,CAAA;AAAA,MAEJ,KAAK,KAAA;AACH,QAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,SAAA;AAAA,cACL,CAAA,EAAE;AAAA;AAAA,WACJ;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,SAAA;AAAA,cACL,CAAA,EAAE;AAAA;AAAA,WACJ;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,CAAA,EAAE;AAAA;AAAA,WACJ;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,SAAA;AAAA,cACL,CAAA,EAAE;AAAA;AAAA;AACJ,SAAA,EACF,CAAA;AAAA,MAEJ,KAAK,MAAA;AACH,QAAA,uBACE,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,CAAA,EAAE;AAAA;AAAA,SACJ;AAAA,MAEJ,KAAK,SAAA;AACH,QAAA,uBACE,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,CAAA,EAAE;AAAA;AAAA,SACJ;AAAA,MAEJ,KAAK,OAAA;AACH,QAAA,uBACE,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,iwBAAA,EAAkwB,CAAA;AAAA,MAE9wB,KAAK,IAAA;AACH,QAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,SAAA;AAAA,cACL,CAAA,EAAE;AAAA;AAAA,WACJ;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,MAAA;AAAA,cACL,CAAA,EAAE;AAAA;AAAA;AACJ,SAAA,EACF,CAAA;AAAA,MAEJ,KAAK,KAAA;AACH,QAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAE,0EAAA,EAA2E,CAAA;AAAA,0BACnF,IAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAG,gBAAA;AAAA,cACH,EAAA,EAAG,QAAA;AAAA,cACH,EAAA,EAAG,QAAA;AAAA,cACH,EAAA,EAAG,QAAA;AAAA,cACH,EAAA,EAAG,SAAA;AAAA,cACH,iBAAA,EAAkB,yBAAA;AAAA,cAClB,aAAA,EAAc,gBAAA;AAAA,cAEd,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAK,MAAA,EAAO,GAAA,EAAI,OAAO,EAAE,SAAA,EAAW,qBAAoB,EAAG,CAAA;AAAA,gCAC5D,GAAA,CAAC,UAAK,MAAA,EAAO,GAAA,EAAI,OAAO,EAAE,SAAA,EAAW,qBAAoB,EAAG;AAAA;AAAA;AAAA,WAC9D;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAE,kaAAA;AAAA,cACF,KAAA,EAAO;AAAA,gBACL,QAAA,EAAU,SAAA;AAAA,gBACV,QAAA,EAAU,SAAA;AAAA,gBACV,IAAA,EAAM;AAAA;AACR;AAAA;AACF,SAAA,EACF,CAAA;AAAA,MAEJ,KAAK,MAAA;AACH,QAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,uBAAA;AAAA,cACL,CAAA,EAAE;AAAA;AAAA,WACJ;AAAA,8BACC,MAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAG,iBAAA;AAAA,cACH,EAAA,EAAG,GAAA;AAAA,cACH,EAAA,EAAG,GAAA;AAAA,cACH,CAAA,EAAE,GAAA;AAAA,cACF,iBAAA,EAAkB,0CAAA;AAAA,cAClB,aAAA,EAAc,gBAAA;AAAA,cAEd,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,gCACzC,GAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,OAAA,EAAQ,WAAU,SAAA,EAAU,CAAA;AAAA,gCACzC,GAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,OAAA,EAAQ,WAAU,SAAA,EAAU,CAAA;AAAA,gCACzC,GAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,OAAA,EAAQ,WAAU,SAAA,EAAU,CAAA;AAAA,gCACzC,GAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,OAAA,EAAQ,WAAU,SAAA,EAAU,CAAA;AAAA,gCACzC,GAAA,CAAC,MAAA,EAAA,EAAK,MAAA,EAAO,GAAA,EAAI,WAAU,SAAA,EAAU;AAAA;AAAA;AAAA,WACvC,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAEJ;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,KAAA;AACH,QAAA,OAAO,WAAA;AAAA,MACT,KAAK,KAAA;AACH,QAAA,OAAO,WAAA;AAAA,MACT,KAAK,MAAA;AACH,QAAA,OAAO,aAAA;AAAA,MACT,KAAK,SAAA;AACH,QAAA,OAAO,aAAA;AAAA,MACT,KAAK,IAAA;AACH,QAAA,OAAO,WAAA;AAAA,MACT,KAAK,KAAA;AACH,QAAA,OAAO,aAAA;AAAA,MACT,KAAK,MAAA;AACH,QAAA,OAAO,aAAA;AAAA,MACT;AACE,QAAA,OAAO,WAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,cAAA,EAAiB,SAAA,IAAa,EAAE,CAAA,CAAA,EAC9C,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,SAAS,UAAA,EAAW;AAAA,MACpB,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAM,4BAAA;AAAA,MACL,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,UAAA,EAAW;AAAA,QACX,UAAU,KAAA,oBACT,GAAA,CAAC,UACC,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAS,IAAG,gBAAA,EACX,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,IAAA,EAAK,OAAA;AAAA,YACL,SAAA,EAAU;AAAA;AAAA,WAEd,CAAA,EACF;AAAA;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;;AChMO,MAAM,UAAkC,CAAC;AAAA,EAC9C,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,KAAA,GAAQ,GAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,EAAA;AAAA,EACZ,gBAAA,GAAmB,EAAA;AAAA,EACnB,OAAA,GAAU,OAAA;AAAA,EACV,QAAA,GAAW,GAAA;AAAA,EACX,MAAA,GAAS;AACX,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,QAAA,CAAS,EAAE,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,CAAA;AAC1E,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAa,OAA2B,MAAS,CAAA;AAEvD,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,QAAA,EAAU;AAEd,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,IACjC;AAEA,IAAA,UAAA,CAAW,OAAA,GAAU,WAAW,MAAM;AACpC,MAAA,YAAA,CAAa,IAAI,CAAA;AAAA,IACnB,GAAG,KAAK,CAAA;AAAA,EACV,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,IACjC;AACA,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,IAAI,CAAC,UAAA,CAAW,OAAA,IAAW,CAAC,WAAW,OAAA,EAAS;AAEhD,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAsB;AAC7D,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,OAAA,CAAQ,qBAAA,EAAsB;AAC7D,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,OAAO,MAAA,CAAO,UAAA;AAAA,MACd,QAAQ,MAAA,CAAO;AAAA,KACjB;AAEA,IAAA,IAAI,GAAA,GAAM,CAAA;AACV,IAAA,IAAI,IAAA,GAAO,CAAA;AAEX,IAAA,MAAM,UAAA,GAAa,MAAA;AACnB,IAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,CAAA;AAC9D,IAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,CAAA;AAG9D,IAAA,QAAQ,QAAA;AAAU,MAChB,KAAK,KAAA;AACH,QAAA,GAAA,GAAM,WAAA,CAAY,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,UAAA;AAC7C,QAAA,IAAA,GAAO,cAAA,GAAiB,YAAY,KAAA,GAAQ,CAAA;AAC5C,QAAA;AAAA,MACF,KAAK,QAAA;AACH,QAAA,GAAA,GAAM,YAAY,MAAA,GAAS,UAAA;AAC3B,QAAA,IAAA,GAAO,cAAA,GAAiB,YAAY,KAAA,GAAQ,CAAA;AAC5C,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,GAAA,GAAM,cAAA,GAAiB,YAAY,MAAA,GAAS,CAAA;AAC5C,QAAA,IAAA,GAAO,WAAA,CAAY,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,UAAA;AAC9C,QAAA;AAAA,MACF,KAAK,OAAA;AACH,QAAA,GAAA,GAAM,cAAA,GAAiB,YAAY,MAAA,GAAS,CAAA;AAC5C,QAAA,IAAA,GAAO,YAAY,KAAA,GAAQ,UAAA;AAC3B,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,GAAA,GAAM,WAAA,CAAY,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,UAAA;AAC7C,QAAA,IAAA,GAAO,WAAA,CAAY,IAAA;AACnB,QAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,GAAA,GAAM,WAAA,CAAY,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,UAAA;AAC7C,QAAA,IAAA,GAAO,WAAA,CAAY,QAAQ,WAAA,CAAY,KAAA;AACvC,QAAA;AAAA,MACF,KAAK,cAAA;AACH,QAAA,GAAA,GAAM,YAAY,MAAA,GAAS,UAAA;AAC3B,QAAA,IAAA,GAAO,WAAA,CAAY,IAAA;AACnB,QAAA;AAAA,MACF,KAAK,YAAA;AACH,QAAA,GAAA,GAAM,YAAY,MAAA,GAAS,UAAA;AAC3B,QAAA,IAAA,GAAO,WAAA,CAAY,QAAQ,WAAA,CAAY,KAAA;AACvC,QAAA;AAAA;AAIJ,IAAA,MAAM,MAAA,GAAS,CAAA;AAGf,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAA,IAAA,GAAO,MAAA;AAAA,IACT,WAAW,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,QAAA,CAAS,QAAQ,MAAA,EAAQ;AAC7D,MAAA,IAAA,GAAO,QAAA,CAAS,KAAA,GAAQ,WAAA,CAAY,KAAA,GAAQ,MAAA;AAAA,IAC9C;AAGA,IAAA,IAAI,MAAM,MAAA,EAAQ;AAEhB,MAAA,IAAI,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,EAAG;AAC5B,QAAA,GAAA,GAAM,YAAY,MAAA,GAAS,UAAA;AAAA,MAC7B,CAAA,MAAO;AACL,QAAA,GAAA,GAAM,MAAA;AAAA,MACR;AAAA,IACF,WAAW,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,QAAA,CAAS,SAAS,MAAA,EAAQ;AAE9D,MAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC/B,QAAA,GAAA,GAAM,WAAA,CAAY,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,UAAA;AAAA,MAC/C,CAAA,MAAO;AACL,QAAA,GAAA,GAAM,QAAA,CAAS,MAAA,GAAS,WAAA,CAAY,MAAA,GAAS,MAAA;AAAA,MAC/C;AAAA,IACF;AAGA,IAAA,IAAI,IAAA,GAAO,QAAQ,IAAA,GAAO,MAAA;AAC1B,IAAA,IAAI,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,QAAA,CAAS,QAAQ,MAAA,EAAQ;AACtD,MAAA,IAAA,GAAO,KAAK,GAAA,CAAI,MAAA,EAAQ,SAAS,KAAA,GAAQ,WAAA,CAAY,QAAQ,MAAM,CAAA;AAAA,IACrE;AACA,IAAA,IAAI,GAAA,GAAM,QAAQ,GAAA,GAAM,MAAA;AACxB,IAAA,IAAI,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,QAAA,CAAS,SAAS,MAAA,EAAQ;AACvD,MAAA,GAAA,GAAM,KAAK,GAAA,CAAI,MAAA,EAAQ,SAAS,MAAA,GAAS,WAAA,CAAY,SAAS,MAAM,CAAA;AAAA,IACtE;AAEA,IAAA,kBAAA,CAAmB,EAAE,GAAA,EAAK,IAAA,EAAM,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AAEb,MAAA,MAAM,SAAA,GAAY,WAAW,MAAM;AACjC,QAAA,iBAAA,EAAkB;AAAA,MACpB,GAAG,CAAC,CAAA;AAEJ,MAAA,OAAO,MAAM,aAAa,SAAS,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,QAAA,EAAU,MAAM,CAAC,CAAA;AAEhC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,iBAAA,EAAkB;AAAA,MACpB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,iBAAA,EAAkB;AAAA,MACpB;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,MAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAAA,IAChD;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACvD,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,YAAY,CAAA;AAAA,IACnD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,OAAA,KAAY,SAAS,WAAA,EAAY;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,OAAA,KAAY,SAAS,WAAA,EAAY;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,WAAA,EAAY;AAAA,MACd,CAAA,MAAO;AACL,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,OAAA,KAAY,SAAS,WAAA,EAAY;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,IAAI,OAAA,KAAY,SAAS,WAAA,EAAY;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2B;AAChD,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,SAAA,EAAW;AACnC,MAAA,WAAA,EAAY;AAAA,IACd;AAAA,EACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,WAAW,OAAA,EAAS;AACtB,QAAA,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,SAAA,EAAW,sBAAsB,SAAS,CAAA,CAAA;AAAA,MAC1C,YAAA,EAAc,gBAAA;AAAA,MACd,YAAA,EAAc,gBAAA;AAAA,MACd,OAAA,EAAS,WAAA;AAAA,MACT,OAAA,EAAS,WAAA;AAAA,MACT,MAAA,EAAQ,UAAA;AAAA,MACR,SAAA,EAAW,aAAA;AAAA,MACX,QAAA,EAAU,OAAA,KAAY,OAAA,GAAU,CAAA,GAAI,MAAA;AAAA,MAEnC,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QACA,aAAa,OAAA,oBACZ,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,SAAA,EAAW,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAA;AAAA,YACjE,KAAA,EAAO;AAAA,cACL,KAAK,eAAA,CAAgB,GAAA;AAAA,cACrB,MAAM,eAAA,CAAgB,IAAA;AAAA,cACtB;AAAA,aACF;AAAA,YACA,IAAA,EAAK,SAAA;AAAA,YACL,WAAA,EAAU,QAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACZ,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,8BACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,qCAAA,EAAwC,QAAQ,CAAA,CAAA,EAAI;AAAA;AAAA;AAAA;AACtE;AAAA;AAAA,GAEJ;AAEJ;;AChQO,MAAM,UAAA,GAAa,CAAC,KAAA,KAAkB;AAC3C,EAAA,OAAO,KAAA,CAAM,OAAO,CAAC,CAAA,CAAE,mBAAkB,GAAI,KAAA,CAAM,UAAU,CAAC,CAAA;AAChE;AAEO,MAAM,gBAAA,GAAmB,CAAC,CAAA,EAAW,CAAA,KAAc;AACxD,EAAA,OAAO,CAAA,CAAE,iBAAA,EAAkB,KAAM,CAAA,CAAE,iBAAA,EAAkB;AACvD;AAEO,MAAM,QAAA,GAAW,CAAC,CAAA,KAAgB;AACvC,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA;AACrC;;ACVO,SAAS,4BAA4B,OAAA,EAAiB;AAC3D,EAAA,OAAA,CAAQ,aAAa,OAAA,MAAa,CAAA;AACpC;;ACkBO,MAAM,iBAAA,GAAoB,CAC/B,UAAA,EACA,UAAA,KACmB;AACnB,EAAA,MAAM,EAAE,UAAA,EAAY,aAAA,EAAe,YAAA,EAAa,GAAI,cAAA;AAAA,IAClD,UAAA,CAAW,KAAA;AAAA,IACX,UAAA,CAAW;AAAA,GACb;AACA,EAAA,MAAM,EAAE,gBAAgB,iBAAA,EAAmB,gBAAA,KACzC,iBAAA,CAAkB,UAAA,CAAW,SAAA,EAAW,UAAA,CAAW,SAAS,CAAA;AAC9D,EAAA,MAAM,EAAE,kBAAkB,mBAAA,EAAqB,kBAAA,KAC7C,qBAAA,CAAsB,UAAA,CAAW,WAAA,EAAa,UAAA,CAAW,WAAW,CAAA;AAEtE,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,MAAM,cAAA,GAAiB,CACrB,QAAA,EACA,QAAA,KAC4B;AAC5B,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,QAAA;AAAA,MACZ,eAAe,EAAC;AAAA,MAChB,cAAc;AAAC,KACjB;AAAA,EACF;AAEA,EAAA,MAAM,aAA4C,EAAC;AACnD,EAAA,MAAM,eAAgC,EAAC;AAEvC,EAAA,QAAA,CAAS,QAAQ,CAAA,IAAA,KAAQ;AACvB,IAAA,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA;AAGvB,IAAA,MAAM,cAAc,QAAA,CAAS,IAAA,CAAK,aAAW,OAAA,CAAQ,GAAA,KAAQ,KAAK,GAAG,CAAA;AACrE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,YAAA,CAAa,KAAK,IAAI,CAAA;AAAA,IACxB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,aAA8B,EAAC;AACrC,EAAA,MAAM,gBAAiC,EAAC;AAKxC,EAAA,QAAA,CAAS,QAAQ,CAAA,OAAA,KAAW;AAC1B,IAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,OAAA,CAAQ,GAAG,CAAA;AAC9C,IAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,MAAA,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,IACzB,CAAA,MAAA,IAAW,eAAA,CAAgB,KAAA,KAAU,OAAA,CAAQ,KAAA,EAAO;AAClD,MAAA,aAAA,CAAc,KAAK,OAAO,CAAA;AAAA,IAC5B;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AAEA,MAAM,iBAAA,GAAoB,CACxB,YAAA,EACA,YAAA,KAC4B;AAC5B,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,IAAA,OAAO;AAAA,MACL,cAAA,EAAgB,YAAA;AAAA,MAChB,mBAAmB,EAAC;AAAA,MACpB,kBAAkB;AAAC,KACrB;AAAA,EACF;AAEA,EAAA,MAAM,gBAAkD,EAAC;AACzD,EAAA,MAAM,mBAAuC,EAAC;AAE9C,EAAA,YAAA,CAAa,QAAQ,CAAA,OAAA,KAAW;AAC9B,IAAA,aAAA,CAAc,OAAA,CAAQ,QAAQ,CAAA,GAAI,OAAA;AAGlC,IAAA,MAAM,cAAc,YAAA,CAAa,IAAA;AAAA,MAC/B,CAAA,UAAA,KAAc,UAAA,CAAW,QAAA,KAAa,OAAA,CAAQ;AAAA,KAChD;AACA,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,gBAAA,CAAiB,KAAK,OAAO,CAAA;AAAA,IAC/B;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,iBAAqC,EAAC;AAC5C,EAAA,MAAM,oBAAwC,EAAC;AAK/C,EAAA,YAAA,CAAa,QAAQ,CAAA,UAAA,KAAc;AACjC,IAAA,MAAM,iBAAA,GAAoB,aAAA,CAAc,UAAA,CAAW,QAAQ,CAAA;AAC3D,IAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,MAAA,cAAA,CAAe,KAAK,UAAU,CAAA;AAAA,IAChC,CAAA,MAAA,IAAW,iBAAA,CAAkB,KAAA,KAAU,UAAA,CAAW,KAAA,EAAO;AACvD,MAAA,iBAAA,CAAkB,KAAK,UAAU,CAAA;AAAA,IACnC;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;AAEA,MAAM,qBAAA,GAAwB,CAC5B,SAAA,EACA,SAAA,KAC4B;AAC5B,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,EAAW;AAC5B,IAAA,OAAO;AAAA,MACL,kBAAA,EAAoB,KAAA;AAAA,MACpB,gBAAA,EAAkB,MAAA;AAAA,MAClB,mBAAA,EAAqB;AAAA,KACvB;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,aAAa,SAAA,EAAW;AAC3B,IAAA,OAAO;AAAA,MACL,kBAAA,EAAoB,KAAA;AAAA,MACpB,gBAAA,EAAkB,SAAA;AAAA,MAClB,mBAAA,EAAqB;AAAA,KACvB;AAAA,EACF;AAEA,EAAA,MAAM,SACJ,SAAA,EAAW,QAAA,KAAa,WAAW,QAAA,IACnC,SAAA,EAAW,UAAU,SAAA,EAAW,KAAA;AAClC,EAAA,OAAO;AAAA,IACL,gBAAA,EAAkB,MAAA;AAAA,IAClB,mBAAA,EAAqB,SAAS,MAAA,GAAY,SAAA;AAAA,IAC1C,kBAAA,EAAoB;AAAA,GACtB;AACF,CAAA;;AC1KO,MAAM,MAAM,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,QAAQ,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS;;ACA9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACO,SAASU,SAAO,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,CAAC,YAAY,UAAU,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC;AACpG;AACA;AACO,SAASC,SAAO,CAAC,CAAC,EAAE;AAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,CAAC;AAC9D;AACA;AACO,SAAS,MAAM,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE;AACtC,IAAI,IAAI,CAACD,SAAO,CAAC,CAAC,CAAC;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;AAC9C,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACzD,QAAQ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,OAAO,GAAG,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;AAChG;AACA;AACO,SAAS,KAAK,CAAC,CAAC,EAAE;AACzB,IAAI,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,UAAU;AACjE,QAAQ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AACvE,IAAIC,SAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACxB,IAAIA,SAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvB;AACA;AACO,SAAS,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,EAAE;AACxD,IAAI,IAAI,QAAQ,CAAC,SAAS;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAC3D,IAAI,IAAI,aAAa,IAAI,QAAQ,CAAC,QAAQ;AAC1C,QAAQ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAChE;AACA;AACO,SAAS,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE;AACvC,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS;AAClC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,wDAAwD,GAAG,GAAG,CAAC;AACvF,IAAI;AACJ;AAKA;AACO,SAAS,GAAG,CAAC,GAAG,EAAE;AACzB,IAAI,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AACtF;AACA;AACO,SAAS,KAAK,CAAC,GAAG,MAAM,EAAE;AACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,IAAI;AACJ;AACA;AACO,SAAS,UAAU,CAAC,GAAG,EAAE;AAChC,IAAI,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC;AACnE;AACA;AACO,SAAS,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC;AACpD;AACA;AACO,SAAS,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5D;AACA;AACO,MAAM,IAAI,mBAAmB,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG;AAC9G;AACO,SAAS,QAAQ,CAAC,IAAI,EAAE;AAC/B,IAAI,QAAQ,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,UAAU;AACtC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,QAAQ,CAAC;AAChC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC;AAC/B,SAAS,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC;AAC9B;AACA;AACO,MAAM,SAAS,GAAG;AACzB,MAAM,CAAC,CAAC,KAAK;AACb,MAAM,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;AAGxB;AACO,SAAS,UAAU,CAAC,GAAG,EAAE;AAChC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;AACO,MAAM,UAAU,GAAG;AAC1B,MAAM,CAAC,CAAC,KAAK;AACb,MAAM,UAAU;AAChB;AACA,MAAM,aAAa,mBAAmB,CAAC;AACvC;AACA,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,UAAU,GAAG;AAC9F;AACA,MAAM,KAAK,mBAAmB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpG;AACA;AACA;AACA;AACO,SAASC,YAAU,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB;AACA,IAAI,IAAI,aAAa;AACrB,QAAQ,OAAO,KAAK,CAAC,KAAK,EAAE;AAC5B;AACA,IAAI,IAAI,GAAG,GAAG,EAAE;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;AACA;AACA,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;AAC9D,SAAS,aAAa,CAAC,EAAE,EAAE;AAC3B,IAAI,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE;AAC1C,QAAQ,OAAO,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AAC9B,IAAI,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC;AACxC,QAAQ,OAAO,EAAE,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACpC,IAAI,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC;AACxC,QAAQ,OAAO,EAAE,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACpC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACO,SAASC,YAAU,CAAC,GAAG,EAAE;AAChC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,OAAO,GAAG,CAAC;AACjE;AACA,IAAI,IAAI,aAAa;AACrB,QAAQ,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;AACtC,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM;AACzB,IAAI,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;AACrB,IAAI,IAAI,EAAE,GAAG,CAAC;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,EAAE,CAAC;AAChF,IAAI,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;AACpC,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;AACrD,QAAQ,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACpD,QAAQ,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE;AAClD,YAAY,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C,YAAY,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,IAAI,GAAG,aAAa,GAAG,EAAE,CAAC;AACvG,QAAQ;AACR,QAAQ,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACjC,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AAoBA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,GAAG,EAAE;AACjC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AAC1C,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD;AAQA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,IAAI,EAAE;AAC9B,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AAChC,QAAQ,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;AAChC,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,IAAI,OAAO,IAAI;AACf;AAWA;AACO,SAAS,WAAW,CAAC,GAAG,MAAM,EAAE;AACvC,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM;AACvB,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACnC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;AACvB,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM;AACvB,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;AAOA;AACO,MAAM,IAAI,CAAC;AAClB;AACA;AACO,SAAS,YAAY,CAAC,QAAQ,EAAE;AACvC,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;AACnE,IAAI,MAAM,GAAG,GAAG,QAAQ,EAAE;AAC1B,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;AACnC,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;AACjC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,QAAQ,EAAE;AACnC,IAAI,OAAO,KAAK;AAChB;AACO,SAAS,eAAe,CAAC,QAAQ,EAAE;AAC1C,IAAI,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;AAC7E,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC5B,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;AACnC,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ;AACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC;AAC3C,IAAI,OAAO,KAAK;AAChB;AAYA;AACO,SAAS,WAAW,CAAC,WAAW,GAAG,EAAE,EAAE;AAC9C,IAAI,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE;AAChE,QAAQ,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;AAClE,IAAI;AACJ;AACA,IAAI,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE;AAC5D,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAC/D,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AAC7D;;ACvRA;AACA;AACA;AACA;AAEA;AACO,SAAS,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5D,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;AAC/C,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC;AACzD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AAC3B,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACvC,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC;AACjD,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;AACvC,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC1B,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;AAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;AAC5C;AACA;AACO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA;AACO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,SAAS,IAAI,CAAC;AACjC,IAAI,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;AACtD,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,QAAQ,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,QAAQ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;AAC/C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;AAC/B,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG;AACtC,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACjE;AACA,YAAY,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnC,gBAAgB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;AACjD,gBAAgB,OAAO,QAAQ,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,QAAQ;AAC7D,oBAAoB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC/C,gBAAgB;AAChB,YAAY;AACZ,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;AAChE,YAAY,IAAI,CAAC,GAAG,IAAI,IAAI;AAC5B,YAAY,GAAG,IAAI,IAAI;AACvB,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;AACvC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,gBAAgB,IAAI,CAAC,GAAG,GAAG,CAAC;AAC5B,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;AAClC,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,QAAQ,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B;AACA;AACA;AACA,QAAQ,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI;AACrD,QAAQ,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;AAC1B;AACA,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU;AAClC,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxC;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,GAAG,EAAE;AAC7C,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACjC,YAAY,GAAG,GAAG,CAAC;AACnB,QAAQ;AACR;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE;AAC3C,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACzB;AACA;AACA;AACA,QAAQ,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;AACvE,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7B,QAAQ,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;AACrC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS;AAClC;AACA,QAAQ,IAAI,GAAG,GAAG,CAAC;AACnB,YAAY,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC;AAC1E,QAAQ,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC;AAC9B,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAChC,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;AACjC,YAAY,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AACjE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;AACvC,YAAY,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AAClD,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI;AAC1C,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC/B,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;AAC9C,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,UAAU,CAAC,EAAE,EAAE;AACnB,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3C,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC7B,QAAQ,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI;AAC3E,QAAQ,EAAE,CAAC,SAAS,GAAG,SAAS;AAChC,QAAQ,EAAE,CAAC,QAAQ,GAAG,QAAQ;AAC9B,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM;AAC1B,QAAQ,EAAE,CAAC,GAAG,GAAG,GAAG;AACpB,QAAQ,IAAI,MAAM,GAAG,QAAQ;AAC7B,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,CAAC,UAAU,EAAE;AAChC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,SAAS,mBAAmB,WAAW,CAAC,IAAI,CAAC;AAC1D,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,CAAC,CAAC;AAUF;AACO,MAAM,SAAS,mBAAmB,WAAW,CAAC,IAAI,CAAC;AAC1D,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,CAAC,CAAC;;ACzJF;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,mBAAmB,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtD,MAAM,IAAI,mBAAmB,MAAM,CAAC,EAAE,CAAC;AACvC,SAAS,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE;AAChC,IAAI,IAAI,EAAE;AACV,QAAQ,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,EAAE;AACjF,IAAI,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE;AACrF;AACA,SAAS,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE;AAChC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;AAC1B,IAAI,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;AACjC,IAAI,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;AACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC,QAAQ,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5C,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACnB;AAEA;AACA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AACnC,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvD;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D;AACA,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;AAC5B,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;AAC5B;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D;AACA;AACA,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACrC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC/D;AACA;AACA,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClE,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;AAC7E,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnF,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;AACtF,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpG,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;;ACrD/F;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,mBAAmB,WAAW,CAAC,IAAI,CAAC;AAClD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;AACxF,CAAC,CAAC;AACF;AACA,MAAM,QAAQ,mBAAmB,IAAI,WAAW,CAAC,EAAE,CAAC;AAC7C,MAAM,MAAM,SAAS,MAAM,CAAC;AACnC,IAAI,WAAW,CAAC,SAAS,GAAG,EAAE,EAAE;AAChC,QAAQ,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC;AACtC;AACA;AACA,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ,IAAI,GAAG,GAAG;AACV,QAAQ,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI;AAC/C,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI;AACJ;AACA,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,IAAI;AACJ,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE;AAC1B;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC;AAChD,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;AACvD,QAAQ,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACtC,YAAY,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACxC,YAAY,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACtC,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AACjE,YAAY,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAChE,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AAC5E,QAAQ;AACR;AACA,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI;AAC7C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACrC,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AACjE,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AACjE,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC,GAAG,CAAC;AACjB,YAAY,CAAC,GAAG,CAAC;AACjB,YAAY,CAAC,GAAG,CAAC;AACjB,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;AAC5B,YAAY,CAAC,GAAG,CAAC;AACjB,YAAY,CAAC,GAAG,CAAC;AACjB,YAAY,CAAC,GAAG,CAAC;AACjB,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;AAC7B,QAAQ;AACR;AACA,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,KAAK,CAAC,QAAQ,CAAC;AACvB,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,IAAI;AACJ;AAcA;AACA;AACA;AACA;AACA,MAAM,IAAI,mBAAmB,CAAC,MAAMC,KAAS,CAAC;AAC9C,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;AAC1F,IAAI,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE;AACtE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACzB,MAAM,SAAS,mBAAmB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG;AACnD,MAAM,SAAS,mBAAmB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG;AACnD;AACA,MAAM,UAAU,mBAAmB,IAAI,WAAW,CAAC,EAAE,CAAC;AACtD,MAAM,UAAU,mBAAmB,IAAI,WAAW,CAAC,EAAE,CAAC;AAC/C,MAAM,MAAM,SAAS,MAAM,CAAC;AACnC,IAAI,WAAW,CAAC,SAAS,GAAG,EAAE,EAAE;AAChC,QAAQ,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC;AACxC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC;AACnC,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC;AACnC,IAAI;AACJ;AACA,IAAI,GAAG,GAAG;AACV,QAAQ,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI;AACvF,QAAQ,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC/E,IAAI;AACJ;AACA,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACxE,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AACxB,IAAI;AACJ,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE;AAC1B;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,EAAE;AAClD,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAClD,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,EAAE;AACzD,QAAQ;AACR,QAAQ,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACtC;AACA,YAAY,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAC/C,YAAY,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;AAC/C,YAAY,MAAM,GAAG,GAAGC,MAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAGA,MAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAGC,KAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACxG,YAAY,MAAM,GAAG,GAAGC,MAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAGA,MAAU,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAGC,KAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACxG;AACA,YAAY,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAC7C,YAAY,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAC7C,YAAY,MAAM,GAAG,GAAGH,MAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAGI,MAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAGH,KAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACpG,YAAY,MAAM,GAAG,GAAGC,MAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAGG,MAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAGF,KAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACpG;AACA,YAAY,MAAM,IAAI,GAAGG,KAAS,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACnF,YAAY,MAAM,IAAI,GAAGC,KAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACzF,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;AACpC,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;AACpC,QAAQ;AACR,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI;AACrF;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACrC;AACA,YAAY,MAAM,OAAO,GAAGP,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGA,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGI,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpG,YAAY,MAAM,OAAO,GAAGF,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGA,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGG,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpG;AACA,YAAY,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;AAC/C,YAAY,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;AAC/C;AACA;AACA,YAAY,MAAM,IAAI,GAAGG,KAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAClF,YAAY,MAAM,GAAG,GAAGC,KAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACvF,YAAY,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;AAChC;AACA,YAAY,MAAM,OAAO,GAAGT,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGI,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGA,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpG,YAAY,MAAM,OAAO,GAAGF,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGG,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGA,MAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACpG,YAAY,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AAC1D,YAAY,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AAC1D,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGK,GAAO,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AACzE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;AACvB,YAAY,MAAM,GAAG,GAAGC,KAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;AACrD,YAAY,EAAE,GAAGC,KAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;AACnD,YAAY,EAAE,GAAG,GAAG,GAAG,CAAC;AACxB,QAAQ;AACR;AACA,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGF,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGA,GAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAChF,IAAI;AACJ,IAAI,UAAU,GAAG;AACjB,QAAQ,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC;AACrC,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,IAAI;AACJ;AAiCA;AACA,MAAM,OAAO,mBAAmB,WAAW,CAAC,IAAI,CAAC;AACjD,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAClG,CAAC,CAAC;AAsBK,MAAM,UAAU,SAAS,MAAM,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,EAAE,CAAC;AACjB,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AACjC,QAAQ,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AACjC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,QAAM,mBAAmB,YAAY,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;AAOtE;AACA;AACA;AACA;AACO,MAAMC,YAAU,mBAAmB,YAAY,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;;AChX9E;AACA;AACA;AACA;AAEO,MAAM,IAAI,SAAS,IAAI,CAAC;AAC/B,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5B,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,KAAK;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAClC,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU;AACnD,YAAY,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAClF,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC3C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AAC7C,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACtC,QAAQ,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC;AAC5C;AACA,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;AACjF,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AAC3C,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI;AAC1B,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAClC;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AAC3C,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI;AACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,QAAQ,KAAK,CAAC,GAAG,CAAC;AAClB,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,EAAE;AAChB,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,QAAQ,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,IAAI;AACJ,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACxD,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC5B,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,UAAU,CAAC,EAAE,EAAE;AACnB;AACA,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,QAAQ,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI;AAC/E,QAAQ,EAAE,GAAG,EAAE;AACf,QAAQ,EAAE,CAAC,QAAQ,GAAG,QAAQ;AAC9B,QAAQ,EAAE,CAAC,SAAS,GAAG,SAAS;AAChC,QAAQ,EAAE,CAAC,QAAQ,GAAG,QAAQ;AAC9B,QAAQ,EAAE,CAAC,SAAS,GAAG,SAAS;AAChC,QAAQ,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7C,QAAQ,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7C,QAAQ,OAAO,EAAE;AACjB,IAAI;AACJ,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,CAAC,UAAU,EAAE;AAChC,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAC5B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AACxF,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;;ACpFhD;AACA;AACA;AACA;AACA;AAGA,MAAMC,KAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC;AACrC,MAAMC,KAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC;AAKrC;AACO,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE;AAC3C,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACpC,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAQ,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,6BAA6B,GAAG,OAAO,KAAK,CAAC;AAC9E,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA;AACA;AACO,SAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE;AACpD,IAAI,MAAM,KAAK,GAAGC,SAAQ,CAAC,KAAK,CAAC;AACjC,IAAI,MAAM,GAAG,GAAG,KAAK,EAAE,MAAM;AAC7B,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS;AACzC,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE;AAChD,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;AAC7C,QAAQ,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE;AAC5D,QAAQ,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;AACpE,QAAQ,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,GAAG,CAAC;AAChF,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB;AACA;AACO,SAAS,mBAAmB,CAAC,GAAG,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChC,IAAI,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3C;AACO,SAAS,WAAW,CAAC,GAAG,EAAE;AACjC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,OAAO,GAAG,CAAC;AACjE,IAAI,OAAO,GAAG,KAAK,EAAE,GAAGF,KAAG,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AACjD;AACA;AACO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,WAAW,CAACG,YAAW,CAAC,KAAK,CAAC,CAAC;AAC1C;AACO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,IAAIC,MAAO,CAAC,KAAK,CAAC;AAClB,IAAI,OAAO,WAAW,CAACD,YAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACrE;AACO,SAAS,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE;AACxC,IAAI,OAAOE,YAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7D;AACO,SAAS,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE;AACxC,IAAI,OAAO,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;AAC5C;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE;AACxD,IAAI,IAAI,GAAG;AACX,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,IAAI;AACZ,YAAY,GAAG,GAAGA,YAAW,CAAC,GAAG,CAAC;AAClC,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,MAAM,IAAI,KAAK,CAAC,KAAK,GAAG,4CAA4C,GAAG,CAAC,CAAC;AACrF,QAAQ;AACR,IAAI;AACJ,SAAS,IAAIH,SAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B;AACA;AACA,QAAQ,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,IAAI;AACJ,SAAS;AACT,QAAQ,MAAM,IAAI,KAAK,CAAC,KAAK,GAAG,mCAAmC,CAAC;AACpE,IAAI;AACJ,IAAgB,GAAG,CAAC;AAGpB,IAAI,OAAO,GAAG;AACd;AACA;AACO,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAC7B,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,IAAI,GAAG,CAAC;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;AACrC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,OAAO,IAAI,KAAK,CAAC;AACrB;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,IAAIF,KAAG,IAAI,CAAC;AAClD,SAAS,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;AACrC,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;AAC/E;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7C;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;AAC7B,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,CAAC,EAAE;AAC1B,IAAI,IAAI,GAAG;AACX,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,GAAGA,KAAG,EAAE,CAAC,KAAKC,KAAG,EAAE,GAAG,IAAI,CAAC;AAC9C,QAAQ;AACR,IAAI,OAAO,GAAG;AACd;AAeA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAACA,KAAG,IAAI,MAAM,CAAC,CAAC,CAAC,IAAIA,KAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC1D,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC;AAClD,QAAQ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;AACnD,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC;AACpD,QAAQ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;AACpD,IAAI,IAAI,OAAO,MAAM,KAAK,UAAU;AACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;AACpD;AACA,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,MAAM,KAAK,GAAG,MAAM;AACxB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAQ,CAAC,GAAG,CAAC;AACb,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK;AACtC;AACA,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AAChB,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC7B,YAAY;AACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AAChB,IAAI,CAAC;AACL,IAAI,MAAM,GAAG,GAAG,MAAM;AACtB;AACA,QAAQ,IAAI,CAAC,EAAE,IAAI,IAAI;AACvB,YAAY,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACtD,QAAQ,IAAI,GAAG,GAAG,CAAC;AACnB,QAAQ,MAAM,GAAG,GAAG,EAAE;AACtB,QAAQ,OAAO,GAAG,GAAG,QAAQ,EAAE;AAC/B,YAAY,CAAC,GAAG,CAAC,EAAE;AACnB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;AAChC,YAAY,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,YAAY,GAAG,IAAI,CAAC,CAAC,MAAM;AAC3B,QAAQ;AACR,QAAQ,OAAOK,WAAY,CAAC,GAAG,GAAG,CAAC;AACnC,IAAI,CAAC;AACL,IAAI,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AACrC,QAAQ,KAAK,EAAE;AACf,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,QAAQ,IAAI,GAAG,GAAG,SAAS,CAAC;AAC5B,QAAQ,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACnC,YAAY,MAAM,EAAE;AACpB,QAAQ,KAAK,EAAE;AACf,QAAQ,OAAO,GAAG;AAClB,IAAI,CAAC;AACL,IAAI,OAAO,QAAQ;AACnB;AA2CO,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE;AAChE,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;AAC7C,QAAQ,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AACxD,IAAI,SAAS,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE;AACxD,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;AACrC,QAAQ,IAAI,KAAK,IAAI,GAAG,KAAK,SAAS;AACtC,YAAY;AACZ,QAAQ,MAAM,OAAO,GAAG,OAAO,GAAG;AAClC,QAAQ,IAAI,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,IAAI;AACpD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,uBAAuB,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACxG,IAAI;AACJ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACvE,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACzE;AAOA;AACA;AACA;AACA;AACO,SAAS,QAAQ,CAAC,EAAE,EAAE;AAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE;AAC7B,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK;AAC7B,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAChC,QAAQ,IAAI,GAAG,KAAK,SAAS;AAC7B,YAAY,OAAO,GAAG;AACtB,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC9B,QAAQ,OAAO,QAAQ;AACvB,IAAI,CAAC;AACL;;AChUA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA,MAAMN,KAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAEC,KAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAEM,KAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC,EAAEC,KAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC;AACxG;AACA,MAAMC,KAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC,EAAEC,KAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC;AACvG;AACA,MAAM,GAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,mBAAmB,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,mBAAmB,MAAM,CAAC,EAAE,CAAC;AACzG;AACO,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC;AACxB,IAAI,OAAO,MAAM,IAAIV,KAAG,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM;AAC9C;AAUA;AACO,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AACvC,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,OAAO,KAAK,EAAE,GAAGA,KAAG,EAAE;AAC1B,QAAQ,GAAG,IAAI,GAAG;AAClB,QAAQ,GAAG,IAAI,MAAM;AACrB,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;AACvC,IAAI,IAAI,MAAM,KAAKA,KAAG;AACtB,QAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;AAC3D,IAAI,IAAI,MAAM,IAAIA,KAAG;AACrB,QAAQ,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,MAAM,CAAC;AAC3E;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,GAAG,MAAM;AAClB;AACA,IAAO,IAAC,CAAC,GAAGA,KAAG,CAAC,CAAU,CAAC,GAAGC,KAAG;AACjC,IAAI,OAAO,CAAC,KAAKD,KAAG,EAAE;AACtB;AACA,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAE3B;AACA,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAS,CAAC,GAAG,CAAQ;AAChD,IAAI;AACJ,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,IAAI,IAAI,GAAG,KAAKC,KAAG;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACjD,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACzB;AACA,SAAS,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AACrC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,GAAGA,KAAG,IAAIQ,KAAG;AACzC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AAClC,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/B,IAAI,OAAO,IAAI;AACf;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG;AACzC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAEF,KAAG,CAAC;AAC7B,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;AAChC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAEA,KAAG,CAAC,EAAE,CAAC,CAAC;AACxC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/B,IAAI,OAAO,IAAI;AACf;AACA;AACA;AACA,SAAS,UAAU,CAAC,CAAC,EAAE;AACvB,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC3B,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,GAAGG,KAAG,IAAI,IAAI,CAAC;AAChC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK;AACtB,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChC,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAClC,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACpC,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC3C,QAAQ,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,CAAC,EAAE;AACjC;AACA;AACA,IAAI,IAAI,CAAC,GAAGF,KAAG;AACf,QAAQ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AAC9D;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAGP,KAAG;AACnB,IAAI,IAAI,CAAC,GAAG,CAAC;AACb,IAAI,OAAO,CAAC,GAAGM,KAAG,KAAKP,KAAG,EAAE;AAC5B,QAAQ,CAAC,IAAIO,KAAG;AAChB,QAAQ,CAAC,EAAE;AACX,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,GAAGA,KAAG;AACf,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,IAAI,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;AACrC;AACA;AACA,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI;AACtB,YAAY,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;AAC5E,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,KAAK,CAAC;AACf,QAAQ,OAAO,SAAS;AACxB;AACA;AACA,IAAI,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,GAAGN,KAAG,IAAIM,KAAG;AAClC,IAAI,OAAO,SAAS,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE;AACvC,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,YAAY,OAAO,CAAC;AACpB;AACA,QAAQ,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;AACnC,YAAY,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACtD;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClC;AACA;AACA,QAAQ,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;AACnC,YAAY,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,gBAAgB,OAAO,EAAE,CAAC,IAAI,CAAC;AAC/B,YAAY,IAAI,CAAC,GAAG,CAAC;AACrB;AACA,YAAY,IAAI,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3C,gBAAgB,CAAC,EAAE;AACnB,gBAAgB,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtC,gBAAgB,IAAI,CAAC,KAAK,CAAC;AAC3B,oBAAoB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AAC9D,YAAY;AACZ;AACA,YAAY,MAAM,QAAQ,GAAGN,KAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC1C;AACA,YAAY,CAAC,GAAG,CAAC;AACjB,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,CAAC,EAAE;AAC1B;AACA,IAAI,IAAI,CAAC,GAAGQ,KAAG,KAAKD,KAAG;AACvB,QAAQ,OAAO,SAAS;AACxB;AACA,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG;AACvB,QAAQ,OAAO,SAAS;AACxB;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG;AACxB,QAAQ,OAAO,UAAU,CAAC,CAAC,CAAC;AAC5B;AACA,IAAI,OAAO,aAAa,CAAC,CAAC,CAAC;AAC3B;AAGA;AACA,MAAM,YAAY,GAAG;AACrB,IAAI,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;AAC3D,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AAC5C,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC5B,CAAC;AACM,SAAS,aAAa,CAAC,KAAK,EAAE;AACrC,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,KAAK,EAAE,QAAQ;AACvB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,KAAK,EAAE,QAAQ;AACvB,QAAQ,IAAI,EAAE,QAAQ;AACtB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AACnD,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU;AAC7B,QAAQ,OAAO,GAAG;AAClB,IAAI,CAAC,EAAE,OAAO,CAAC;AACf,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;AAChC;AACA;AACA;AACA,IAAI,OAAO,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;AACtC,IAAI,IAAI,KAAK,GAAGR,KAAG;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AAClE,IAAI,IAAI,KAAK,KAAKA,KAAG;AACrB,QAAQ,OAAO,EAAE,CAAC,GAAG;AACrB,IAAI,IAAI,KAAK,KAAKC,KAAG;AACrB,QAAQ,OAAO,GAAG;AAClB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG;AAClB,IAAI,IAAI,CAAC,GAAG,GAAG;AACf,IAAI,OAAO,KAAK,GAAGD,KAAG,EAAE;AACxB,QAAQ,IAAI,KAAK,GAAGC,KAAG;AACvB,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,KAAK,KAAKA,KAAG;AACrB,IAAI;AACJ,IAAI,OAAO,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE;AAC1D,IAAI,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC;AAChF;AACA,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;AACvD,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,YAAY,OAAO,GAAG;AACtB,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG;AACzB,QAAQ,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AACd;AACA,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AAC7C;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;AACtC,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,YAAY,OAAO,GAAG;AACtB,QAAQ,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/B,IAAI,CAAC,EAAE,WAAW,CAAC;AACnB,IAAI,OAAO,QAAQ;AACnB;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE;AAClC;AACA;AACA,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,GAAGA,KAAG,IAAIM,KAAG;AACzC,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACrC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC;AACzC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;AACzD,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;AAClC;AAMA;AACO,SAAS,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE;AACvC;AACA,IAAI,IAAI,UAAU,KAAK,SAAS;AAChC,QAAQ1B,SAAO,CAAC,UAAU,CAAC;AAC3B,IAAI,MAAM,WAAW,GAAG,UAAU,KAAK,SAAS,GAAG,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;AACpF,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAClD,IAAI,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,KAAK,EAAE,YAAY;AACzC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE;AACzB,IAAI,IAAI,KAAK,IAAImB,KAAG;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,CAAC;AAC1E,IAAI,IAAI,WAAW,GAAG,SAAS;AAC/B,IAAI,IAAI,KAAK,GAAG,SAAS;AACzB,IAAI,IAAI,YAAY,GAAG,KAAK;AAC5B,IAAI,IAAI,cAAc,GAAG,SAAS;AAClC,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,IAAI,IAAI,EAAE;AAClE,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;AAC7B,YAAY,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACnE,QAAQ,MAAM,KAAK,GAAG,YAAY;AAClC,QAAQ,IAAI,KAAK,CAAC,IAAI;AACtB,YAAY,WAAW,GAAG,KAAK,CAAC,IAAI;AACpC,QAAQ,IAAI,KAAK,CAAC,IAAI;AACtB,YAAY,KAAK,GAAG,KAAK,CAAC,IAAI;AAC9B,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;AAC3C,YAAY,IAAI,GAAG,KAAK,CAAC,IAAI;AAC7B,QAAQ,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,SAAS;AACnD,YAAY,YAAY,GAAG,KAAK,CAAC,YAAY;AAC7C,QAAQ,cAAc,GAAG,KAAK,CAAC,cAAc;AAC7C,IAAI;AACJ,SAAS;AACT,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ;AAC5C,YAAY,WAAW,GAAG,YAAY;AACtC,QAAQ,IAAI,IAAI,CAAC,IAAI;AACrB,YAAY,KAAK,GAAG,IAAI,CAAC,IAAI;AAC7B,IAAI;AACJ,IAAI,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC;AAChF,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACzE,IAAI,IAAI,KAAK,CAAC;AACd,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;AAC3B,QAAQ,IAAI,EAAEA,KAAG;AACjB,QAAQ,GAAG,EAAEC,KAAG;AAChB,QAAQ,cAAc,EAAE,cAAc;AACtC,QAAQ,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACxC,QAAQ,OAAO,EAAE,CAAC,GAAG,KAAK;AAC1B,YAAY,IAAI,OAAO,GAAG,KAAK,QAAQ;AACvC,gBAAgB,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,OAAO,GAAG,CAAC;AAC5F,YAAY,OAAOD,KAAG,IAAI,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC;AAC7C,QAAQ,CAAC;AACT,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,KAAKA,KAAG;AACjC;AACA,QAAQ,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3D,QAAQ,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,GAAGC,KAAG,MAAMA,KAAG;AAC3C,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC;AACtC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG;AACtC,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC;AAC3C,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC;AAChD,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC;AAChD,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,KAAK,CAAC;AAChD,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;AACjD,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;AAC/D;AACA,QAAQ,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG;AAChC,QAAQ,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG;AACrC,QAAQ,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG;AACrC,QAAQ,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG;AACrC,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;AACxC,QAAQ,IAAI,EAAE,KAAK;AACnB,aAAa,CAAC,CAAC,KAAK;AACpB,gBAAgB,IAAI,CAAC,KAAK;AAC1B,oBAAoB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACzC,gBAAgB,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,YAAY,CAAC,CAAC;AACd,QAAQ,OAAO,EAAE,CAAC,GAAG,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5F,QAAQ,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK;AACrD,YAAY,IAAI,cAAc,EAAE;AAChC,gBAAgB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE;AACpF,oBAAoB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,cAAc,GAAG,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;AAClH,gBAAgB;AAChB,gBAAgB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC;AACpD;AACA,gBAAgB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1E,gBAAgB,KAAK,GAAG,MAAM;AAC9B,YAAY;AACZ,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK;AACtC,gBAAgB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,KAAK,GAAG,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;AACrG,YAAY,IAAI,MAAM,GAAG,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC;AAC/E,YAAY,IAAI,YAAY;AAC5B,gBAAgB,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;AAC3C,YAAY,IAAI,CAAC,cAAc;AAC/B,gBAAgB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACtC,oBAAoB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AACvF;AACA;AACA,YAAY,OAAO,MAAM;AACzB,QAAQ,CAAC;AACT;AACA,QAAQ,WAAW,EAAE,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC;AACnD;AACA;AACA,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,KAAK,CAAC;AACN,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B;AAyCA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,UAAU,EAAE;AAChD,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;AACtC,QAAQ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;AACrD,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM;AACnD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,UAAU,EAAE;AAC7C,IAAI,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC;AAClD,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,KAAK,EAAE;AAC9D,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;AAC1B,IAAI,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC;AACpD,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC;AAC/C;AACA,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,IAAI;AAC9C,QAAQ,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,MAAM,GAAG,4BAA4B,GAAG,GAAG,CAAC;AAClF,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC;AAClE;AACA,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,UAAU,GAAGA,KAAG,CAAC,GAAGA,KAAG;AACpD,IAAI,OAAO,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;AACzF;;AChhBA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMD,KAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACrB,MAAMC,KAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACd,SAAS,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7B,IAAI,OAAO,SAAS,GAAG,GAAG,GAAG,IAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;AACtC,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE;AACA,SAAS,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE;AAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACtD,QAAQ,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,IAAI,GAAG,WAAW,GAAG,CAAC,CAAC;AACtF;AACA,SAAS,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE;AAClC,IAAI,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;AAC5B,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClD,IAAI,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5D;AACA,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;AACvC,IAAI,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK;AAC1D,IAAI,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG,UAAU,EAAE;AAC5B;AACA,QAAQ,KAAK,IAAI,SAAS,CAAC;AAC3B,QAAQ,KAAK,IAAIA,KAAG,CAAC;AACrB,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU;AAC3C,IAAI,MAAM,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrD,IAAI,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC;AAC/B,IAAI,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;AAC5B,IAAI,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC;AAChC,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;AAC5D;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE;AACtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACzC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC7B,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;AAC7B,YAAY,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,CAAC,CAAC;AAC1D,IAAI,CAAC,CAAC;AACN;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE;AAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;AACpD,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,CAAC;AAC3D,IAAI,CAAC,CAAC;AACN;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAE;AACtC,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAE;AACtC,SAAS,IAAI,CAAC,CAAC,EAAE;AACjB;AACA;AACA,IAAI,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,IAAI,IAAI,CAAC,KAAKD,KAAG;AACjB,QAAQ,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,IAAI,CAAC;AAClB;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC9B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AAC9B,QAAQ,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACzC,QAAQ,IAAI,CAAC,GAAG,GAAG;AACnB,QAAQ,OAAO,CAAC,GAAGA,KAAG,EAAE;AACxB,YAAY,IAAI,CAAC,GAAGC,KAAG;AACvB,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC1B,YAAY,CAAC,KAAKA,KAAG;AACrB,QAAQ;AACR,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE;AAC/B,QAAQ,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AAC/D,QAAQ,MAAM,MAAM,GAAG,EAAE;AACzB,QAAQ,IAAI,CAAC,GAAG,KAAK;AACrB,QAAQ,IAAI,IAAI,GAAG,CAAC;AACpB,QAAQ,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE;AACzD,YAAY,IAAI,GAAG,CAAC;AACpB,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B;AACA,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAgB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,YAAY;AACZ,YAAY,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7B,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;AAC5B;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AAC7C;AACA,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;AACzB,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;AACzB;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1C,QAAQ,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;AAC5D;AACA,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;AAChG,YAAY,CAAC,GAAG,KAAK;AACrB,YAAY,IAAI,MAAM,EAAE;AACxB;AACA;AACA,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,CAAC,CAAC,CAAC;AAClB;AACA;AACA;AACA,QAAQ,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;AACnD,QAAQ,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AAC1C,QAAQ,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;AAC5D,YAAY,IAAI,CAAC,KAAKD,KAAG;AACzB,gBAAgB,MAAM;AACtB,YAAY,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;AAC/E,YAAY,CAAC,GAAG,KAAK;AACrB,YAAY,IAAI,MAAM,EAAE;AACxB;AACA;AACA,gBAAgB;AAChB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC;AAChD,gBAAgB,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAC5D,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,CAAC,CAAC,CAAC;AAClB,QAAQ,OAAO,GAAG;AAClB,IAAI;AACJ,IAAI,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;AACxC;AACA,QAAQ,IAAI,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9C,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,YAAY,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE;AACzB;AACA,gBAAgB,IAAI,OAAO,SAAS,KAAK,UAAU;AACnD,oBAAoB,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;AAC1C,gBAAgB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;AACjD,YAAY;AACZ,QAAQ;AACR,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AACrC,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;AAC7E,IAAI;AACJ,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE;AAC3C,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,CAAC;AACnB,YAAY,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3D,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;AACzF,IAAI;AACJ;AACA;AACA;AACA,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,QAAQ,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAQ,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,QAAQ,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,IAAI,QAAQ,CAAC,GAAG,EAAE;AAClB,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;AACpD,IAAI,IAAI,GAAG,GAAG,KAAK;AACnB,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI;AACvB,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI;AACvB,IAAI,OAAO,EAAE,GAAGA,KAAG,IAAI,EAAE,GAAGA,KAAG,EAAE;AACjC,QAAQ,IAAI,EAAE,GAAGC,KAAG;AACpB,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAQ,IAAI,EAAE,GAAGA,KAAG;AACpB,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,QAAQ,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE;AAC1B,QAAQ,EAAE,KAAKA,KAAG;AAClB,QAAQ,EAAE,KAAKA,KAAG;AAClB,IAAI;AACJ,IAAI,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,IAAI,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC;AACvC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM;AACjC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;AAClC,IAAI,IAAI,OAAO,KAAK,OAAO;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC9E;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI;AACvB,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,KAAK,GAAG,EAAE;AAClB,QAAQ,UAAU,GAAG,KAAK,GAAG,CAAC;AAC9B,SAAS,IAAI,KAAK,GAAG,CAAC;AACtB,QAAQ,UAAU,GAAG,KAAK,GAAG,CAAC;AAC9B,SAAS,IAAI,KAAK,GAAG,CAAC;AACtB,QAAQ,UAAU,GAAG,CAAC;AACtB,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,UAAU;AAC5E,IAAI,IAAI,GAAG,GAAG,IAAI;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE;AACpD,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAY,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;AACrC,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC9D,YAAY,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAQ;AACR,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAClE,YAAY,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,QAAQ;AACR,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,CAAC;AACnB,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE;AAC/C,gBAAgB,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE;AAClC,IAAI;AACJ,IAAI,OAAO,GAAG;AACd;AAoGA,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AACzC,IAAI,IAAI,KAAK,EAAE;AACf,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;AACjC,YAAY,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;AAC7E,QAAQ,aAAa,CAAC,KAAK,CAAC;AAC5B,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;AACrC,IAAI;AACJ;AACA;AACO,SAAS,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE;AACxE,IAAI,IAAI,MAAM,KAAK,SAAS;AAC5B,QAAQ,MAAM,GAAG,IAAI,KAAK,SAAS;AACnC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC3C,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9D,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AACrC,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAGD,KAAG,CAAC;AACnD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACjE,IAAI;AACJ,IAAI,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;AACzD,IAAI,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;AACzD,IAAI,MAAM,EAAE,GAA4B,GAAG,CAAM;AACjD,IAAI,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;AACxC,IAAI,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AAC5B;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,wCAAwC,CAAC,CAAC;AACjF,IAAI;AACJ,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACnD,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;AAC5B;;AC/cA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;AACA,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAIO,KAAG,IAAI,GAAG;AAC5E;AACA;AACA;AACO,SAAS,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AAC9C;AACA;AACA;AACA,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK;AACtC,IAAI,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACpC,IAAI,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC;AACA;AACA,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAClC,IAAI,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,EAAE,GAAGP,KAAG;AAC1B,IAAI,MAAM,KAAK,GAAG,EAAE,GAAGA,KAAG;AAC1B,IAAI,IAAI,KAAK;AACb,QAAQ,EAAE,GAAG,CAAC,EAAE;AAChB,IAAI,IAAI,KAAK;AACb,QAAQ,EAAE,GAAG,CAAC,EAAE;AAChB;AACA;AACA,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAGC,KAAG,CAAC;AAC5D,IAAI,IAAI,EAAE,GAAGD,KAAG,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE,GAAGA,KAAG,IAAI,EAAE,IAAI,OAAO,EAAE;AAChE,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,CAAC,CAAC;AACrE,IAAI;AACJ,IAAI,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AACnC;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE;AACnC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzD,QAAQ,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;AACpF,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,KAAK,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC1C;AACA,QAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AACnF,IAAI;AACJ,IAAIW,OAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;AAC7B,IAAIA,OAAK,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;AACnC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;AAClC,QAAQ,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;AACvC,IAAI,OAAO,KAAK;AAChB;AACO,MAAM,MAAM,SAAS,KAAK,CAAC;AAClC,IAAI,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE;AACxB,QAAQ,KAAK,CAAC,CAAC,CAAC;AAChB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,GAAG,GAAG;AACnB;AACA,IAAI,GAAG,EAAE,MAAM;AACf;AACA,IAAI,IAAI,EAAE;AACV,QAAQ,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AAC/B,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG;AAClC,YAAY,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG;AACpC,gBAAgB,MAAM,IAAI,CAAC,CAAC,uBAAuB,CAAC;AACpD,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AAC/B,gBAAgB,MAAM,IAAI,CAAC,CAAC,2BAA2B,CAAC;AACxD,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AAC3C,YAAY,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACpD,YAAY,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG;AACtC,gBAAgB,MAAM,IAAI,CAAC,CAAC,sCAAsC,CAAC;AACnE;AACA,YAAY,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG,GAAG,mBAAmB,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE;AAC3F,YAAY,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC;AAC9C,YAAY,OAAO,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI;AAC1C,QAAQ,CAAC;AACT;AACA,QAAQ,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;AAC1B,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG;AAClC,YAAY,IAAI,GAAG,GAAG,CAAC;AACvB,YAAY,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG;AACpC,gBAAgB,MAAM,IAAI,CAAC,CAAC,uBAAuB,CAAC;AACpD,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG;AACtD,gBAAgB,MAAM,IAAI,CAAC,CAAC,uBAAuB,CAAC;AACpD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,YAAY,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;AAC3C,YAAY,IAAI,MAAM,GAAG,CAAC;AAC1B,YAAY,IAAI,CAAC,MAAM;AACvB,gBAAgB,MAAM,GAAG,KAAK;AAC9B,iBAAiB;AACjB;AACA,gBAAgB,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG;AAC1C,gBAAgB,IAAI,CAAC,MAAM;AAC3B,oBAAoB,MAAM,IAAI,CAAC,CAAC,mDAAmD,CAAC;AACpF,gBAAgB,IAAI,MAAM,GAAG,CAAC;AAC9B,oBAAoB,MAAM,IAAI,CAAC,CAAC,0CAA0C,CAAC,CAAC;AAC5E,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC;AACpE,gBAAgB,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM;AACjD,oBAAoB,MAAM,IAAI,CAAC,CAAC,uCAAuC,CAAC;AACxE,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AACxC,oBAAoB,MAAM,IAAI,CAAC,CAAC,sCAAsC,CAAC;AACvE,gBAAgB,KAAK,MAAM,CAAC,IAAI,WAAW;AAC3C,oBAAoB,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC;AAC9C,gBAAgB,GAAG,IAAI,MAAM;AAC7B,gBAAgB,IAAI,MAAM,GAAG,GAAG;AAChC,oBAAoB,MAAM,IAAI,CAAC,CAAC,wCAAwC,CAAC;AACzE,YAAY;AACZ,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC;AACtD,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AACnC,gBAAgB,MAAM,IAAI,CAAC,CAAC,gCAAgC,CAAC;AAC7D,YAAY,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE;AACxD,QAAQ,CAAC;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,EAAE;AACV,QAAQ,MAAM,CAAC,GAAG,EAAE;AACpB,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG;AAClC,YAAY,IAAI,GAAG,GAAGX,KAAG;AACzB,gBAAgB,MAAM,IAAI,CAAC,CAAC,4CAA4C,CAAC;AACzE,YAAY,IAAI,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC;AAC9C;AACA,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM;AACpD,gBAAgB,GAAG,GAAG,IAAI,GAAG,GAAG;AAChC,YAAY,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAC9B,gBAAgB,MAAM,IAAI,CAAC,CAAC,gDAAgD,CAAC;AAC7E,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,EAAE;AACrB,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG;AAClC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;AAC7B,gBAAgB,MAAM,IAAI,CAAC,CAAC,qCAAqC,CAAC;AAClE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACpD,gBAAgB,MAAM,IAAI,CAAC,CAAC,qDAAqD,CAAC;AAClF,YAAY,OAAO,eAAe,CAAC,IAAI,CAAC;AACxC,QAAQ,CAAC;AACT,KAAK;AACL,IAAI,KAAK,CAAC,GAAG,EAAE;AACf;AACA,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG;AACpD,QAAQ,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC;AAClD,QAAQ,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;AACvE,QAAQ,IAAI,YAAY,CAAC,MAAM;AAC/B,YAAY,MAAM,IAAI,CAAC,CAAC,6CAA6C,CAAC;AACtE,QAAQ,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC;AACvE,QAAQ,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;AACzE,QAAQ,IAAI,UAAU,CAAC,MAAM;AAC7B,YAAY,MAAM,IAAI,CAAC,CAAC,6CAA6C,CAAC;AACtE,QAAQ,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/D,IAAI,CAAC;AACL,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG;AAC5C,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE;AAC3B,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;AACpC,IAAI,CAAC;AACL,CAAC;AACD;AACA;AACA,MAAMA,KAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAEC,KAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAEM,KAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AAClF,SAAS,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE;AACxC,IAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE;AAClC,IAAI,IAAI,GAAG;AACX,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACjC,QAAQ,GAAG,GAAG,GAAG;AACjB,IAAI;AACJ,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC;AACnD,QAAQ,IAAI;AACZ,YAAY,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;AACrC,QAAQ;AACR,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,2CAA2C,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AACxG,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;AACrE,IAAI,OAAO,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE;AACrD,IAAI,MAAM,SAAS,GAAG,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC;AAC1E,IAAI,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS;AAChC,IAAI,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK;AAC/B,IAAI,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK;AACjD,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE;AACnC,QAAQ,kBAAkB,EAAE,SAAS;AACrC,QAAQ,aAAa,EAAE,UAAU;AACjC,QAAQ,aAAa,EAAE,UAAU;AACjC,QAAQ,SAAS,EAAE,UAAU;AAC7B,QAAQ,OAAO,EAAE,UAAU;AAC3B,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,cAAc,EAAE,SAAS;AACjC,KAAK,CAAC;AACN,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS;AAC9B,IAAI,IAAI,IAAI,EAAE;AACd;AACA,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC/F,YAAY,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;AACzF,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC;AACvC,IAAI,SAAS,4BAA4B,GAAG;AAC5C,QAAQ,IAAI,CAAC,EAAE,CAAC,KAAK;AACrB,YAAY,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC;AACzF,IAAI;AACJ;AACA,IAAI,SAAS,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;AACnD,QAAQ,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;AACzC,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,QAAQI,OAAK,CAAC,YAAY,EAAE,cAAc,CAAC;AAC3C,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,4BAA4B,EAAE;AAC1C,YAAY,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,YAAY,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;AACrD,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtE,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,cAAc,CAAC,KAAK,EAAE;AACnC,QAAQC,QAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC;AACzC,QAAQ,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;AAC3E,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AACnC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtC;AACA,QAAQ,IAAI,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE;AACjE,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,YAAY,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;AACtE,YAAY,MAAM,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC;AACjB,YAAY,IAAI;AAChB,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,YAAY;AACZ,YAAY,OAAO,SAAS,EAAE;AAC9B,gBAAgB,MAAM,GAAG,GAAG,SAAS,YAAY,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,OAAO,GAAG,EAAE;AACtF,gBAAgB,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,GAAG,CAAC;AAC/E,YAAY;AACZ,YAAY,4BAA4B,EAAE;AAC1C,YAAY,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,MAAM,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/C,YAAY,IAAI,SAAS,KAAK,MAAM;AACpC,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,YAAY,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ;AACR,aAAa,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AACrD;AACA,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK;AAC9B,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAChC,gBAAgB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;AAC7D,YAAY,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AACrH,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,IAAI,YAAY;AACzD,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,IAAI,cAAc;AAC7D,IAAI,SAAS,mBAAmB,CAAC,CAAC,EAAE;AACpC,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI;AACJ;AACA;AACA,IAAI,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AAClC,IAAI;AACJ;AACA;AACA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;AACtC,QAAQ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AAC5D;AACA;AACA,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;AAClD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACrD,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,QAAQ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;AACnD;AACA,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE;AAC/C,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,QAAQ,OAAO,CAAC;AAChB,IAAI;AACJ,IAAI,SAAS,SAAS,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC;AACvD,IAAI;AACJ,IAAI,SAAS,gBAAgB,CAAC,CAAC,EAAE;AACjC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;AAClC,YAAY,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;AACtC,QAAQ,OAAO,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK;AAC7C,QAAQ,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AAC7B;AACA,QAAQ,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AAC7B,YAAY,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACjC,QAAQ,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;AAC3B;AACA;AACA,QAAQ,IAAI,EAAE,IAAI,IAAI;AACtB,YAAY,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/B,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/B,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAChC,QAAQ,IAAI,GAAG;AACf,YAAY,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE;AAC7C,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;AAC/B,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AAC/C,QAAQ,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,CAAC,CAAC;AACN;AACA;AACA,IAAI,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK;AAC5C,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;AACrB;AACA;AACA;AACA,YAAY,IAAI,SAAS,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,gBAAgB;AAChB,YAAY,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AAC9C,QAAQ;AACR;AACA,QAAQ,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE;AACrC,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;AAChE,QAAQ,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;AAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;AACrE,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC,CAAC;AACN,IAAI,SAAS,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1D,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,QAAQ,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;AAClC,QAAQ,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;AAClC,QAAQ,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,KAAK,CAAC;AAChB;AACA,QAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC7B,YAAY,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnC,YAAY,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC;AACzC,YAAY,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/B,QAAQ;AACR,QAAQ,OAAO,KAAK,GAAG;AACvB,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR;AACA,QAAQ,OAAO,UAAU,CAAC,CAAC,EAAE;AAC7B,YAAY,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE;AACpC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,gBAAgB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;AACvD,YAAY,IAAI,CAAC,YAAY,KAAK;AAClC,gBAAgB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;AAC/D;AACA,YAAY,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,gBAAgB,OAAO,KAAK,CAAC,IAAI;AACjC,YAAY,OAAO,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AAC1C,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,KAAK,EAAE;AAChC,YAAY,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAACA,QAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACtF,YAAY,CAAC,CAAC,cAAc,EAAE;AAC9B,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,QAAQ,OAAO,OAAO,CAAC,GAAG,EAAE;AAC5B,YAAY,OAAO,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAChE,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG;AAChB,YAAY,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG;AAChB,YAAY,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE;AAClD,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;AAC9C,YAAY,IAAI,CAAC,MAAM;AACvB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACnC,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR;AACA;AACA,QAAQ,cAAc,GAAG;AACzB,YAAY,eAAe,CAAC,IAAI,CAAC;AACjC,QAAQ;AACR,QAAQ,QAAQ,GAAG;AACnB,YAAY,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzC,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK;AACzB,gBAAgB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAC9D,YAAY,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,QAAQ;AACR;AACA,QAAQ,MAAM,CAAC,KAAK,EAAE;AACtB,YAAY,SAAS,CAAC,KAAK,CAAC;AAC5B,YAAY,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;AAChD,YAAY,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK;AACjD,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7D,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7D,YAAY,OAAO,EAAE,IAAI,EAAE;AAC3B,QAAQ;AACR;AACA,QAAQ,MAAM,GAAG;AACjB,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5D,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,MAAM,GAAG;AACjB,YAAY,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK;AAClC,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;AACrC,YAAY,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;AAChD,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;AACzD,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,E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;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,OAAO,IAAI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S,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACvE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC1E,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACxE,IAAI,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACvE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC1E,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EA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EAAE,CAAC,EAAE,CAAC;AACxD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxD,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACxD,IAAI,CAAC,EA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,CAAC,CAAC;AACtD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACvC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACvC,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAO,mBAAmB,eAAe,CAAC,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;;AClTnF;AACA;AACA;AACA;AACA;AAIA;AACO,MAAM,OAAO,GAAGC,SAAG;;ACL1B,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAC;AACzC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAC5C,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,oBAAoB,KAAK,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAChH,MAAM,uBAAuB,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK;AAC7D,IAAI,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;AAChE,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,oBAAoB,CAAC;AACtD,IAAI,OAAO,qBAAqB,CAAC,WAAW,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAC7E,CAAC;AACM,MAAM,uBAAuB,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK;AAC7D,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1C,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/B,CAAC;;ACtBD,MAAMd,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAMc,SAAO,GAAG,CAAC;AACV,MAAM,gBAAgB,GAAG,uBAAuB,CAACA,SAAO,CAAC;AACzD,MAAM,gBAAgB,GAAG,uBAAuB,CAACA,SAAO,CAAC;AACzD,MAAM,GAAG,GAAG;AACnB,UAAIf,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACVD,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,GAAG;AACb,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACpD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACpD,MAAM,IAAI,GAAG;AACpB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACTD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,IAAI;AACd,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,GAAG,GAAG;AACnB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAMC,QAAM,GAAG,KAAK;AACb,MAAM,gBAAgB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACjD,MAAM,gBAAgB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACjD,MAAM,GAAG,GAAG;AACnB,UAAIF,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACVD,MAAMD,OAAI,GAAG,WAAW;AACxB,MAAMC,WAAQ,GAAG,EAAE;AACZ,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,SAAS,GAAG;AACzB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,sBAAsB;AAClC,CAAC;;ACTD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,EAAE;AACZ,MAAM,gBAAgB,GAAG,2BAA2B,EAAE;AACtD,MAAM,gBAAgB,GAAG,2BAA2B,EAAE;AACtD,MAAM,GAAG,GAAG;AACnB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACND,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAM,IAAI,GAAG,EAAE;AACf,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;AAC1C,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC;AACtE,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC;AAC1D,IAAI,OAAO,gBAAgB,CAAC,WAAW,CAAC;AACxC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC5C,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AACnD,IAAI,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACxBD,MAAMD,OAAI,GAAG,WAAW;AACxB,MAAMC,WAAQ,GAAG,GAAG;AACb,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,SAAS,GAAG;AACzB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,sBAAsB;AAClC,CAAC;;ACVM,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACxC,IAAI,MAAM,KAAK,GAAG,EAAE;AACpB,IAAI,GAAG;AACP,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACxC,QAAQ,MAAM,KAAK,EAAE;AACrB,QAAQ,IAAI,MAAM,IAAI,EAAE,EAAE;AAC1B,YAAY,IAAI,GAAG,IAAI,GAAG,GAAG;AAC7B,QAAQ;AACR,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,IAAI,CAAC,QAAQ,MAAM,IAAI,EAAE;AACzB,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,CAAC;AACM,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACxC,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,IAAI,KAAK,GAAG,EAAE;AAClB,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC/B,QAAQ,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK;AAC7C,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC;AAC9B,YAAY;AACZ,QAAQ,KAAK,IAAI,EAAE;AACnB,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,CAAC;;ACjBD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAM,kBAAkB,GAAG,CAAC,OAAO,KAAK;AACxC,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;AAC1B,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;AAC1B,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC5B,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;AAC/B,YAAY,OAAO,KAAK;AACxB,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvD,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AACjC,YAAY,OAAO,KAAK;AACxB,IAAI;AACJ,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACjC,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AACjC,YAAY,OAAO,KAAK;AACxB,IAAI;AACJ,SAAS;AACT,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,CAAC;AACD,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACtD,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE;AACxB,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AAC7C,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AACvC,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAClD,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;AAChD,IAAI,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC7D,IAAI,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACnC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC5C,IAAI,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,QAAQ,KAAK,CAAC,EAAE;AACxB,QAAQ,OAAO,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACvE,IAAI;AACJ,IAAI,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAC3E,IAAI,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACpD,IAAI,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC;AACtD,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;AAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;AChED,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAMC,QAAM,GAAG,KAAK;AACb,MAAM,gBAAgB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACjD,MAAM,gBAAgB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACjD,MAAM,GAAG,GAAG;AACnB,UAAIF,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACVD,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,iBAAiB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACzF,MAAM,iBAAiB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AACnF,MAAM,IAAI,GAAG;AACpB,UAAIN,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACZD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,EAAE;AACtB;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG;AACjC,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,IAAI,QAAQ;AACZ,CAAC;AACM,SAAS,mBAAmB,CAAC,OAAO,EAAE;AAC7C;AACA,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,EAAE;AACnC,YAAY,MAAM,GAAG,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC;AACzD,QAAQ;AACR,QAAQ,OAAO,GAAG,OAAO,IAAI,EAAE;AAC/B,IAAI;AACJ,IAAI,OAAO,MAAM,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE;AAC1C;;ACtFA,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAMe,eAAa,GAAG,CAAC;AAChB,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,KAAK,GAAG,IAAI,UAAU,CAACA,eAAa,CAAC;AAC7C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAGA,eAAa,EAAE;AACvC,QAAQ,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAGA,eAAa,CAAC,CAAC;AAC9D,IAAI;AACJ,SAAS;AACT,QAAQ,KAAK,CAAC,GAAG,CAAC,MAAM,EAAEA,eAAa,GAAG,MAAM,CAAC,MAAM,CAAC;AACxD,IAAI;AACJ,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC1C,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACtF,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAIhB,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACvBD;AACA;AACA;AACO,MAAM,kBAAkB,GAAG,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,GAAG,KAAK;AAC7E,IAAI,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC;AACjD,IAAI,MAAM,YAAY,GAAG,4BAA4B,CAAC,aAAa,EAAE,YAAY,CAAC;AAClF,IAAI,OAAO,CAAC,MAAM,KAAK;AACvB,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAClD,YAAY,OAAO,YAAY,CAAC,MAAM,CAAC;AACvC,QAAQ;AACR,QAAQ,OAAO,YAAY,CAAC,MAAM,CAAC;AACnC,IAAI,CAAC;AACL,CAAC;AACM,MAAM,kBAAkB,GAAG,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,GAAG,KAAK;AAC7E,IAAI,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC;AACjD,IAAI,MAAM,YAAY,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACxF,IAAI,OAAO,CAAC,MAAM,KAAK;AACvB,QAAQ,IAAI;AACZ,YAAY,OAAO,YAAY,CAAC,MAAM,CAAC;AACvC,QAAQ;AACR,QAAQ,MAAM;AACd,YAAY,OAAO,YAAY,CAAC,MAAM,CAAC;AACvC,QAAQ;AACR,IAAI,CAAC;AACL,CAAC;;ACzBD,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,KAAK;AACtB,MAAME,KAAG,GAAG,IAAI;AAChB,MAAME,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACpD,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,IAAI,GAAG;AACpB,UAAIN,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACpBD,MAAMD,OAAI,GAAG,WAAW;AACxB,MAAMC,WAAQ,GAAG,IAAI;AACd,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,SAAS,GAAG;AACzB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,sBAAsB;AAClC,CAAC;;ACTD,MAAMD,OAAI,GAAG,WAAW;AACxB,MAAMC,WAAQ,GAAG,GAAG;AACb,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,SAAS,GAAG;AACzB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,sBAAsB;AAClC,CAAC;;ACTD,MAAMD,OAAI,GAAG,UAAU;AACvB,MAAMC,WAAQ,GAAG,IAAI;AACd,MAAM,qBAAqB,GAAG,2BAA2B,EAAE;AAC3D,MAAM,qBAAqB,GAAG,2BAA2B,EAAE;AAC3D,MAAM,QAAQ,GAAG;AACxB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,qBAAqB;AACjC,CAAC;;ACTD,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAME,KAAG,GAAG,MAAM;AACX,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,IAAI,GAAG;AACpB,UAAIH,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,IAAI;AACrB,MAAMC,QAAM,GAAG,KAAK;AACb,MAAM,gBAAgB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACjD,MAAM,gBAAgB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACjD,MAAM,GAAG,GAAG;AACnB,UAAIF,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACXD,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,IAAI;AACd,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AACnD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC;AAChD,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACzD,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;AAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;AAC/B,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC;AAClC,IAAI,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;AAC7C,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;AC5BD,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,GAAG;AACpB,MAAMC,QAAM,GAAG,KAAK;AACb,MAAM,iBAAiB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AAClD,MAAM,iBAAiB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AAClD,MAAM,IAAI,GAAG;AACpB,UAAIF,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,IAAI;AACrB,MAAME,KAAG,GAAG,IAAI;AAChB,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,MAAM,CAAC,MAAM,CAACA,KAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACnD,IAAI,IAAI,MAAM,KAAKA,KAAG;AACtB,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5B,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI,IAAI,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;AAChC,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAIH,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACzBD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC;AACzE,IAAI,OAAO,iBAAiB,CAAC,iBAAiB,CAAC;AAC/C,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,OAAO,KAAK,CAAC;AACrB,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;AClBD,MAAMD,OAAI,GAAG,KAAK;AAClB,MAAMC,WAAQ,GAAG,EAAE;AACZ,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,IAAI,KAAK,IAAI;AACrB,QAAQ,OAAO,CAAC,EAAE,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,IAAI,IAAI,KAAK,IAAI;AACrB,QAAQ,OAAO,CAAC,EAAE,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAI,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC;AAC3C,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,MAAM,KAAK,IAAI;AACvB,QAAQ,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACjF,IAAI,IAAI,MAAM,KAAK,IAAI;AACvB,QAAQ,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACjF,IAAI,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AAC7C,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;AC3BD,MAAMD,OAAI,GAAG,MAAM;AACnB,MAAMC,WAAQ,GAAG,GAAG;AACb,MAAM,iBAAiB,GAAG,qBAAqB;AAC/C,MAAM,iBAAiB,GAAG,qBAAqB;AAC/C,MAAM,IAAI,GAAG;AACpB,UAAID,OAAI;AACR,cAAIC,WAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACRD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAME,KAAG,GAAG,MAAM;AAClB,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AACjD,MAAM,gBAAgB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAC1C,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,OAAO,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC5C,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACnBD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAME,KAAG,GAAG,IAAI;AACT,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,IAAI,GAAG;AACpB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAME,KAAG,GAAG,KAAK;AACV,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,IAAI,GAAG;AACpB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAME,KAAG,GAAG,MAAM;AACX,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,IAAI,GAAG;AACpB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AAClF,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACXD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,OAAO,GAAG,CAAC;AACV,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC;AACzD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC;AACzD,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACVD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAME,KAAG,GAAG,KAAK;AACjB,MAAME,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACpBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AAClF,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACXD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;AAC/C,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACjD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrD,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACjD,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACjBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,CAAC;AAClB,MAAME,KAAG,GAAG,KAAK;AACjB,MAAME,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACpBD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAME,KAAG,GAAG,OAAO;AACZ,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,IAAI,GAAG;AACpB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,EAAE;AACnB,MAAME,KAAG,GAAG,MAAM;AAClB,MAAME,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AACtD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AACtD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,IAAI,GAAG;AACpB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACpBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACRD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK;AAC7C,IAAI,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE;AAC9C,IAAI,MAAM,MAAM,GAAG,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ;AACrD,IAAI,IAAI,KAAK,GAAG,CAAC;AACjB,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5B,IAAI,MAAM,GAAG,GAAG,EAAE;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI;AAC1B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,oCAAoC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACpF,QAAQ,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC;AACnC,QAAQ,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,qCAAqC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACvF,QAAQ,GAAG,IAAI,IAAI;AACnB,QAAQ,OAAO,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE;AACrC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;AAC5D,QAAQ;AACR,IAAI;AACJ,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI;AACnD,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AAC7B,IAAI,OAAO,GAAG;AACd,CAAC;AACD,MAAM,SAAS,GAAG;AAClB,IAAI,MAAM,EAAE,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,IAAI,MAAM,EAAE,CAAC,MAAM,KAAK;AACxB,QAAQ,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;AAChD,QAAQ,IAAI,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,QAAQ,IAAI,QAAQ,KAAK,CAAC;AAC1B,YAAY,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,IAAI,CAAC;AACL,CAAC;AACD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtG,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;AAC5D,IAAI,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACnDD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC;AACxC,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AAClD,IAAI,OAAO,qBAAqB,CAAC,WAAW,CAAC;AAC7C,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AAC7B,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,SAAS,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAChD,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AACtC,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACvBD,MAAM,gBAAgB,GAAG,yDAAyD;AAC3E,MAAM,mBAAmB,GAAG,CAAC,OAAO,KAAK;AAChD,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;AACjD,QAAQ,OAAO,KAAK;AACpB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACvC,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,IAAI;AACf,CAAC;;ACLD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC;AACzC,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AACpC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC;AAChC,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACnBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,KAAK,GAAG,IAAI;AAClB,MAAM,SAAS,GAAG,CAAC,IAAI,KAAK;AAC5B,IAAI,MAAM,GAAG,GAAG;AAChB,SAAS,WAAW;AACpB,SAAS,KAAK,CAAC,EAAE;AACjB,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK;AACpB,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACpC,QAAQ,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE;AACtC,YAAY,OAAO,CAAC;AACpB,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE;AACzC,QAAQ;AACR,IAAI,CAAC;AACL,SAAS,IAAI,CAAC,EAAE,CAAC;AACjB,IAAI,IAAI,GAAG,GAAG,EAAE;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE;AACrD,IAAI;AACJ,IAAI,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;AAC5B,CAAC;AACD,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK;AAChC,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;AACrE,CAAC;AACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7H,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AAC/C,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC;AAC/C,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE;AAC/E,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACjC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7C,IAAI,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,QAAQ,KAAK,WAAW,CAAC,UAAU,CAAC;AAC5C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;AACvC,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;AChDD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,CAAC;AACX,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,OAAO;AACpB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAME,KAAG,GAAG,MAAM;AACX,MAAM,kBAAkB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AACnD,MAAM,kBAAkB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AACnD,MAAM,KAAK,GAAG;AACrB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,CAAC;;ACVD,MAAMD,MAAI,GAAG,WAAW;AACxB,MAAMC,UAAQ,GAAG,IAAI;AACd,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,SAAS,GAAG;AACzB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,sBAAsB;AAClC,CAAC;;ACRD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AACjD,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI,KAAK,IAAI,EAAE,EAAE;AACzB,YAAY,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACtC,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAClD,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;AAClE,IAAI,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,IAAI,IAAI,GAAG,GAAG,IAAI;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI;AACpD,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AAC1B,QAAQ,GAAG,IAAI,KAAK;AACpB,IAAI;AACJ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;AAChC,IAAI,IAAI,MAAM;AACd,IAAI,IAAI,OAAO,KAAK,CAAC;AACrB,QAAQ,MAAM,GAAG,MAAM;AACvB,SAAS,IAAI,OAAO,KAAK,CAAC;AAC1B,QAAQ,MAAM,GAAG,OAAO;AACxB,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,QAAQ,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;AAClE,IAAI;AACJ,IAAI,QAAQ,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACxF,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,mBAAmB;AAC3B,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACjC,QAAQ,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AACvC,QAAQ,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C;AACA,QAAQ,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,mBAAmB,CAAC;AAC9D,IAAI,IAAI,GAAG,GAAG,IAAI;AAClB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC;AAC/B,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI;AACpD,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;AAC1B,QAAQ,GAAG,IAAI,KAAK;AACpB,IAAI;AACJ,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,QAAQ,GAAG,IAAI,GAAG;AAClB,IAAI,IAAI,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AAC/B,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;AC9DD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAME,KAAG,GAAG,KAAK;AACV,MAAM,gBAAgB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AACjD,MAAM,gBAAgB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AACjD,MAAM,GAAG,GAAG;AACnB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,IAAI;AACd,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC;AACzE,IAAI,OAAO,iBAAiB,CAAC,iBAAiB,CAAC;AAC/C,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,OAAO,KAAK,IAAI;AACxB,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACnBD,MAAMD,MAAI,GAAG,WAAW;AACxB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,sBAAsB,GAAG,2BAA2B,EAAE;AAC5D,MAAM,SAAS,GAAG;AACzB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,sBAAsB;AAClC,CAAC;;ACTD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,CAAC;AAClB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AAClF,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACXD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,IAAI;AACd,MAAM,iBAAiB,GAAG,iBAAiB;AAC3C,MAAM,iBAAiB,GAAG,iBAAiB;AAC3C,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACTD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,OAAO,GAAG,EAAE;AACX,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,OAAO,CAAC;AAC9D,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,OAAO,CAAC;AAC9D,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,CAAC;AAClB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AAClF,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACXD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAME,KAAG,GAAG,MAAM;AACX,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,iBAAiB,GAAG,mBAAmB,CAACA,KAAG,CAAC;AAClD,MAAM,IAAI,GAAG;AACpB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACVD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AAClF,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACRD,MAAMD,MAAI,GAAG,IAAI;AACjB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAMgB,QAAM,GAAG,EAAE;AACjB,MAAMC,gBAAc,GAAG,CAAC;AACxB,MAAM,UAAU,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAED,QAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAEC,gBAAc,CAAC;AACnF,MAAM,eAAe,GAAG,CAAC,MAAM,KAAK;AAC3C,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;AACvC,IAAI,OAAO,uBAAuB,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACjE,CAAC;AACM,MAAM,eAAe,GAAG,CAAC,MAAM,KAAK;AAC3C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACnD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAACA,gBAAc,CAAC;AACrD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAACA,gBAAc,CAAC;AACnD,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;AAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,EAAE,GAAG;AAClB,UAAIlB,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,eAAe;AAC3B,CAAC;;AC5BD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,iBAAiB,GAAG,qBAAqB;AAC/C,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AAC7B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACdD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;AAClD,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;AAChD,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AAC7B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACvBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,OAAO;AACpB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAMC,QAAM,GAAG,KAAK;AACb,MAAM,kBAAkB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACnD,MAAM,kBAAkB,GAAG,gBAAgB,CAACA,QAAM,CAAC;AACnD,MAAM,KAAK,GAAG;AACrB,UAAIF,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,CAAC;;ACVD,MAAMD,MAAI,GAAG,OAAO;AACpB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,kBAAkB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AAC1F,MAAM,kBAAkB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AACpF,MAAM,KAAK,GAAG;AACrB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,CAAC;;ACTD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAM,aAAa,GAAG,EAAE;AACxB,MAAM,YAAY,GAAG,qBAAqB;AAC1C,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACjC,IAAI,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACzE,IAAI,MAAM,sBAAsB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC;AAC5E,IAAI,MAAM,mBAAmB,GAAG,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,MAAM;AAC1G,IAAI,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,sBAAsB,CAAC;AACrE,IAAI,OAAO,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACnE,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa;AACvC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC;AAC/B,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;AACtC,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,MAAM;AACxC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;AC5BD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAM,MAAM,GAAG,GAAG;AAClB,MAAMgB,QAAM,GAAG,EAAE;AACjB,MAAM,aAAa,GAAG,CAAC;AACvB,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,MAAM,QAAQ,GAAG;AACjB,IAAI,MAAM,EAAE,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AAC3D,IAAI,MAAM,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7E,CAAC;AACD,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,KAAK;AACrD,IAAI,IAAI,KAAK,GAAG,CAAC;AACjB,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAC5B,IAAI,MAAM,GAAG,GAAG,EAAE;AAClB,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACpC,QAAQ,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,KAAK;AAClC,QAAQ,GAAG,IAAI,IAAI;AACnB,QAAQ,IAAI,CAAC,GAAG,CAAC;AACjB,QAAQ,OAAO,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE;AACrC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC;AACxD,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,IAAI,CAAC;AAClB,QAAQ;AACR,QAAQ,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,CAAC,CAAC;AACjC,IAAI;AACJ,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,IAAI,IAAI;AAC/B,QAAQ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACzC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK;AACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;AACrD,IAAI,IAAI,OAAO,IAAI,GAAG,GAAG,CAAC;AAC1B,QAAQ,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;AAChC,IAAI,OAAO,GAAG;AACd,CAAC;AACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3G,MAAM,WAAW,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;AACnE,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAKA,QAAM,GAAG,aAAa;AAChD,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAEA,QAAM,CAAC;AAC3C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AACjD,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;AAC/E,QAAQ,OAAO,GAAG,GAAG;AACrB,QAAQ,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,IAAI;AACJ,SAAS,IAAI,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;AACnF,QAAQ,OAAO,GAAG,GAAG;AACrB,QAAQ,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,IAAI;AACJ;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;AACzB,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC;AACvD,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,YAAY;AACpB,IAAI,IAAI,OAAO,KAAK,GAAG;AACvB,QAAQ,YAAY,GAAG,YAAY;AACnC,SAAS,IAAI,OAAO,KAAK,GAAG;AAC5B,QAAQ,YAAY,GAAG,WAAW;AAClC;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;AACpD,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAClD,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAIjB,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACtFD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;AACtC,IAAI,OAAO,OAAO,CAAC,WAAW,EAAE;AAChC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC;AAC3C;AACA,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpF,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI;AACJ,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AAC7B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACzBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,EAAE;AACnB,MAAME,KAAG,GAAG,KAAK;AACjB,MAAME,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,SAAIH,KAAG;AACP,mBAAIE,eAAa;AACjB,kBAAIC,cAAY;AAChB,CAAC,CAAC;AACK,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACpBD,MAAMD,MAAI,GAAG,OAAO;AACpB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,kBAAkB,GAAG,2BAA2B,EAAE;AACxD,MAAM,kBAAkB,GAAG,2BAA2B,EAAE;AACxD,MAAM,KAAK,GAAG;AACrB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,CAAC;;ACTD,MAAMD,MAAI,GAAG,aAAa;AAC1B,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,wBAAwB,GAAG,2BAA2B,EAAE;AAC9D,MAAM,wBAAwB,GAAG,2BAA2B,EAAE;AAC9D,MAAM,WAAW,GAAG;AAC3B,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,wBAAwB;AACpC,IAAI,MAAM,EAAE,wBAAwB;AACpC,CAAC;;ACTD,MAAMD,MAAI,GAAG,YAAY;AACzB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,uBAAuB,GAAG,2BAA2B,EAAE;AAC7D,MAAM,uBAAuB,GAAG,2BAA2B,EAAE;AAC7D,MAAM,UAAU,GAAG;AAC1B,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,uBAAuB;AACnC,IAAI,MAAM,EAAE,uBAAuB;AACnC,CAAC;;ACTD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,gBAAgB,GAAG,iBAAiB;AAC1C,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,UAAU;AACvB,MAAMC,UAAQ,GAAG,IAAI;AACd,MAAM,qBAAqB,GAAG,2BAA2B,EAAE;AAC3D,MAAM,qBAAqB,GAAG,2BAA2B,EAAE;AAC3D,MAAM,QAAQ,GAAG;AACxB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,qBAAqB;AACjC,CAAC;;ACTD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,2BAA2B,EAAE;AACtD,MAAM,gBAAgB,GAAG,2BAA2B,EAAE;AACtD,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,EAAE;AACnB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AAClF,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACXD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,OAAO;AACjB,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,gBAAgB,GAAG,qBAAqB;AAC9C,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,WAAW;AACxB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,sBAAsB,GAAG,qBAAqB;AACpD,MAAM,sBAAsB,GAAG,qBAAqB;AACpD,MAAM,SAAS,GAAG;AACzB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,sBAAsB;AAClC,CAAC;;ACND,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACjC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,MAAM,CAAC,MAAM,KAAK,EAAE;AAC3E,QAAQ,OAAO,KAAK;AACpB,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACrC,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3F,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1C,QAAQ,OAAO,KAAK;AACpB,IAAI,OAAO,IAAI;AACf,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC7B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,qBAAqB,CAAC,MAAM,CAAC;AACxC,CAAC;AACM,MAAM,iBAAiB,GAAG,CAAC,MAAM,KAAK;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM;AAC5E,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE;AAC3B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAClD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,IAAI,GAAG;AACpB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;AC/BD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,OAAO;AACxB,MAAM,WAAW,GAAG,CAAC,YAAY,KAAK;AACtC,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,YAAY,CAAC;AAC5D,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;AACxC;AACA;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACtD,IAAI,IAAI,QAAQ;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,QAAQ,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAY,QAAQ,GAAG,QAAQ,IAAI,CAAC;AACpC;AACA,YAAY,QAAQ,IAAI,GAAG;AAC3B,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,IAAI,CAAC;AAC7C,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACjD,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,OAAO,WAAW,CAAC,MAAM,CAAC;AAC9B,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;AACpC,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,MAAM;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,KAAK;AAChB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACnCD,MAAMD,MAAI,GAAG,OAAO;AACpB,MAAMC,UAAQ,GAAG,OAAO;AACxB,MAAM,UAAU,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACzE,MAAM,cAAc,GAAG,CAAC;AACxB,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;AACzD,MAAM,kBAAkB,GAAG,qBAAqB;AAChD,MAAM,kBAAkB,GAAG,CAAC,MAAM,KAAK;AAC9C,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACjD,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AAClD,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACjD,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,KAAK,GAAG;AACrB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,CAAC;;ACvBD,MAAMD,MAAI,GAAG,MAAM;AACnB,MAAMC,UAAQ,GAAG,KAAK;AACtB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,iBAAiB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACzF,MAAM,iBAAiB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AACnF,MAAM,IAAI,GAAG;AACpB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,CAAC;;ACXD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,IAAI;AACrB,MAAME,KAAG,GAAG,KAAK;AACjB,MAAM,KAAK,GAAG,EAAE;AACT,MAAM,gBAAgB,GAAG,oBAAoB,CAACA,KAAG,EAAE,KAAK,CAAC;AACzD,MAAM,gBAAgB,GAAG,oBAAoB,CAACA,KAAG,EAAE,KAAK,CAAC;AACzD,MAAM,GAAG,GAAG;AACnB,UAAIH,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACTD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,EAAE;AACZ,MAAM,gBAAgB,GAAG,YAAY;AACrC,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1D,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AAC1C,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AACzC,IAAI,IAAI,QAAQ,GAAG,uBAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACxF,IAAI,IAAI,QAAQ,KAAK,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/D,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AAC1C,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACpBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,gBAAgB;AACzC,MAAM,gBAAgB,GAAG,gBAAgB;AACzC,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACND,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1C;AACA,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK;AAChC,IAAI,IAAI,GAAG,GAAG,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9B,QAAQ,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI;AACrC,QAAQ,IAAI,IAAI,IAAI,GAAG,IAAI;AAC3B,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC;AAC1B,QAAQ,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM;AACjC,QAAQ,GAAG,IAAI,IAAI;AACnB,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM;AACnC,QAAQ,GAAG,IAAI,IAAI;AACnB,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM;AACnC,QAAQ,GAAG,IAAI,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE;AAC/E,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;AACpD,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;AAC5C,IAAI,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC;AACjE,IAAI,OAAO,YAAY,CAAC,mBAAmB,CAAC;AAC5C,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC;AACxC,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACxC,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACtC,IAAI,IAAI,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;AAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1C,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,OAAO,MAAM;AACjB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;AC9CD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;AACzF,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM;AAC9C,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM;AAC9C,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACVD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,IAAI;AACrB;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE;AACpD,QAAQ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AACtD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvB,QAAQ,IAAI,MAAM;AAClB,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;AAC9B,YAAY,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;AACnC,YAAY,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;AACnC,YAAY,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD;AACA,YAAY,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAC1D,QAAQ,OAAO,iBAAiB,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,IAAI;AACJ,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvB,QAAQ,OAAO,iBAAiB,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,gCAAgC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACpI,IAAI;AACJ,IAAI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAClD,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,QAAQ,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;AACjE,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,QAAQ,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;AACjE,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,QAAQ,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;AACjE,IAAI,IAAI,MAAM,KAAK,KAAK;AACxB,QAAQ,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,IAAI,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;AAClD,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;AC7CD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,EAAE;AACnB,MAAMI,eAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAMC,cAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,CAAC,CAAC,CAAC,EAAEC,cAAY,CAAC,CAAC,CAAC,CAAC;AACxF,MAAM,gBAAgB,GAAG,4BAA4B,CAACD,eAAa,EAAEC,cAAY,CAAC;AAClF,MAAM,GAAG,GAAG;AACnB,UAAIN,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACXD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,GAAG,GAAG,IAAI;AAChB,MAAM,aAAa,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACpD,MAAM,YAAY,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,IAAI,GAAG;AACP,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,CAAC,CAAC;AACK,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,IAAI,GAAG;AACP,IAAI,aAAa;AACjB,IAAI,YAAY;AAChB,CAAC,CAAC;AACK,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;ACnBD,MAAMD,MAAI,GAAG,KAAK;AAClB,MAAMC,UAAQ,GAAG,GAAG;AACpB,MAAM,aAAa,GAAG;AACtB,IAAI,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,QAAQ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACzC,IAAI,OAAO,iBAAiB,CAAC,MAAM,CAAC;AACpC,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AAC5C,IAAI,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC7C,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,QAAQ,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;AACzC,IAAI,OAAO,OAAO;AAClB,CAAC;AACM,MAAM,GAAG,GAAG;AACnB,UAAID,MAAI;AACR,cAAIC,UAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;AC5BD,MAAM,IAAI,GAAG,KAAK;AAClB,MAAM,QAAQ,GAAG,GAAG;AACb,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACnD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACnD,MAAM,GAAG,GAAG;AACnB,IAAI,IAAI;AACR,IAAI,QAAQ;AACZ,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;AAClD;AACA,IAAI,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;AACxC;AACA,IAAI,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;AACpC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AACnC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC;AAC5C;AACA,IAAI,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;AACnC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAC7C;AACA,IAAI,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;AACvC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AAChC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AACnC;AACA,IAAI,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC;AACvC;AACA,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AACtC;AACA,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;AAC5C;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;AACvC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;AACzC;AACA,IAAI,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC;AACA,IAAI,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACtC;AACA,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACpC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AACrC;AACA,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACpC;AACA,IAAI,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACtC;AACA,IAAI,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AACnC;AACA,IAAI,YAAY,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;AAC1C;AACA,IAAI,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC;AACA,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC;AAChD;AACA,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACpC;AACA,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AACnC;AACA,IAAI,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC,CAAC,CAAC;AACK,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;AACrD,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC3B,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC5B,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC7B,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC5B,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AACzB,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC5B,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC5B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC5B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC7B,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC9B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC3B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACxB,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACxB,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC5B,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC7B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,2BAA2B,CAAC;AACpD,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AACzB,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;AAC1B,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;AAC/B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACzB,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC7B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC7B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;AAClC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;AACpC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;AAClC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AAC/B,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;AACxC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC;AAClC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACzB,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC9B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACzB,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AAC/B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC;AAC/C,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;AACnC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AAC/B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;AAChC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC7B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;AACjC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC9B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;AAChC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;AACpC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;AACjC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;AAC7B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC9B,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC;AAC5C,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;AACjC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC;AACpC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC9B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;AAChC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC;AAC1C,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;AAC1C,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;AAChC,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;AAClC,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;AAC3C,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACzB,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACzB,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC7B,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC;AAC7C,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACzB,IAAI,KAAK,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;AAC/C,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5B,IAAI,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;AAChC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC;AACrC,IAAI,MAAM,EAAE,CAAC,UAAU,EAAE,sBAAsB,CAAC;AAChD,IAAI,MAAM,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;AAC5C,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC;AAClC,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAC/B,IAAI,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AAC9B,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5B,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC9B,IAAI,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;AACzB,IAAI,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5B,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC9B,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC9B,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;AAC9B,IAAI,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;AACnC,IAAI,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5B,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AAChC,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC7B,IAAI,MAAM,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;AAC5C,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAC3B,IAAI,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC5B,IAAI,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;AACjC,IAAI,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAChC,IAAI,MAAM,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;AAC5C,IAAI,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;AAC9B,IAAI,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B,IAAI,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;AAC5C,IAAI,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;AACnC,IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;AAC/B,IAAI,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AAClC,IAAI,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;AACjC,CAAC,CAAC;AAC+B,MAAM,CAAC,MAAM,CAAC;AAC/C,IAAI,GAAG,uBAAuB;AAC9B,IAAI,GAAG,oBAAoB;AAC3B,CAAC;;ACvLM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxI,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9I,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/C,IAAI,GAAG,oBAAoB;AAC3B,IAAI,GAAG,uBAAuB;AAC9B,CAAC,CAAC;;ACNK,MAAM,UAAU,GAAG,UAAU;AAO7B,MAAM,oBAAoB,GAAG,CAAC,QAAQ,KAAK;AAClD,IAAI,IAAI,CAAC,QAAQ,GAAG,UAAU,MAAM,CAAC;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;AACxD,IAAI,QAAQ,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ;AACxC,QAAQ,CAAC;AACT,CAAC;;ACPM,MAAM,kBAAkB,GAAG,CAAC,IAAI,KAAK;AAC5C,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB;AACA,QAAQ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAChD,QAAQ,IAAI,CAAC,QAAQ;AACrB,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,QAAQ,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACzD,QAAQ,MAAM,SAAS,GAAGkB,GAAc;AACxC,QAAQ,OAAO;AACf,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,YAAY,MAAM,EAAE,SAAS,CAAC,MAAM;AACpC,YAAY,MAAM,EAAE,SAAS,CAAC,MAAM;AACpC,SAAS;AACT,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB,CAAC;;ACPD,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAA2B;AACpD,EAAA,OAAOC,YAAU,KAAK,CAAA;AACxB,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAe,QAAA,KAA8B;AAElE,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,mBAAmB,QAAQ,CAAA;AACzC,IAAA,KAAA,CAAM,OAAO,KAAK,CAAA;AAClB,IAAA,OAAO,IAAA;AAAA,EACT,SAAQ,GAAA,EAAK;AACX,IAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,wBAAA,EAA2B,QAAQ,CAAA,CAAA,EAAI,GAAG,CAAA;AACtD,IAAA,OAAO,KAAA;AAAA,EACT;AAEF,CAAA;AAEA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAA2B;AACpD,EAAA,OAAO,aAAA,CAAc,OAAO,KAAK,CAAA;AACnC,CAAA;AAEA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAA2B;AACpD,EAAA,OAAO,aAAA,CAAc,OAAO,KAAK,CAAA;AACnC,CAAA;AAGO,MAAM,kBAAA,GAA4C;AAAA,EACvD;AAAA,IACE,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,EAAA;AAAA,IACV,SAAS,OAAA,CAAQ,EAAA;AAAA,IACjB,SAAA,EAAW,KAAA;AAAA,IACX,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,KAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,CAAA;AAAA,IACV,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS,CAAA;AAAA,IACT,WAAA,EAAa,eAAA;AAAA,IACb,YAAA,EAAc;AAAA,GAChB;AAAA,EACA;AAAA,IACE,KAAA,EAAO,KAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,QAAA,EAAU,GAAA;AAAA,IACV,SAAA,EAAW,KAAA;AAAA,IACX,OAAA,EAAS,GAAA;AAAA,IACT,WAAA,EAAa,eAAA;AAAA,IACb,YAAA,EAAc;AAAA,GAChB;AAAA,EACA;AAAA,IACE,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU,2BAAA,CAA4BC,MAAA,CAAK,EAAE,CAAA;AAAA,IAC7C,SAASA,MAAA,CAAK,EAAA;AAAA,IACd,SAAA,EAAW,MAAA;AAAA,IACX,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,2BAAA,CAA4B,QAAA,CAAS,EAAE,CAAA;AAAA,IACjD,SAAS,QAAA,CAAS,EAAA;AAAA,IAClB,SAAA,EAAW,KAAA;AAAA,IACX,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,2BAAA,CAA4B,OAAA,CAAQ,EAAE,CAAA;AAAA,IAChD,SAAS,OAAA,CAAQ,EAAA;AAAA,IACjB,SAAA,EAAW,OAAA;AAAA,IACX,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,2BAAA,CAA4B,QAAA,CAAS,EAAE,CAAA;AAAA,IACjD,SAAS,QAAA,CAAS,EAAA;AAAA,IAClB,SAAA,EAAW,IAAA;AAAA,IACX,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,KAAA,EAAO,IAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,QAAA,EAAU,2BAAA,CAA4B,IAAA,CAAK,EAAE,CAAA;AAAA,IAC7C,SAAS,IAAA,CAAK,EAAA;AAAA,IACd,SAAA,EAAW,MAAA;AAAA,IACX,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa;AAAA;AAEjB;AAEO,MAAM,yBAAyB,MAA0C;AAC9E,EAAA,MAAM,MAA0C,EAAC;AAEjD,EAAA,kBAAA,CAAmB,QAAQ,CAAA,IAAA,KAAQ;AACjC,IAAA,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA,GAAI,IAAA;AAAA,EACvB,CAAC,CAAA;AAED,EAAA,OAAO,GAAA;AACT;AAEO,MAAM,yBAAA,GAA4B,CACvC,IAAA,KACoC;AACpC,EAAA,OAAO,kBAAA,CAAmB,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,aAAa,IAAI,CAAA;AAC/D;AAEO,MAAM,yBAAA,GAA4B,CACvC,IAAA,KACoC;AACpC,EAAA,OAAO,kBAAA,CAAmB,IAAA,CAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,cAAc,IAAI,CAAA;AAChE;;ACpHO,IAAK,mBAAA,qBAAAC,oBAAAA,KAAL;AACL,EAAAA,qBAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,qBAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,qBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,qBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,qBAAA,OAAA,CAAA,GAAQ,OAAA;AALE,EAAA,OAAAA,oBAAAA;AAAA,CAAA,EAAA,mBAAA,IAAA,EAAA;;ACNZ;AACA;AACA;AACA;AACA,MAAMC,QAAM,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK;AAC3B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO;AACxB,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,EAAE;AACvC,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE;AAC7C,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,CAAC,IAAI;AACpB,EAAE,IAAI,CAAC,YAAY,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,OAAO;AAC7E,EAAE,IAAI,CAAC,YAAY,WAAW,EAAE,OAAO,IAAI,UAAU,CAAC,CAAC;AACvD,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC7B,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU;AAC9D,EAAE;AACF,EAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC;AACrD;;AC7CA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC/B,EAAE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACzE,EAAE,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACpC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG;AACrB,EAAE;AACF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AACzE,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;AACpB,EAAE;AACF,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM;AAC5B,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACjC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC/C,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;AAC3B,IAAI,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7E,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;AAClF,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,IAAI;AACJ,IAAI,IAAI,EAAE,MAAM,YAAY,UAAU,CAAC,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;AACtF,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;AACzC;AACA,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM;AAC5B,IAAI,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACpD,MAAM,MAAM,EAAE;AACd,MAAM,MAAM,EAAE;AACd,IAAI;AACJ;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC;AACpD,IAAI,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AAClC;AACA,IAAI,OAAO,MAAM,KAAK,IAAI,EAAE;AAC5B,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAChC;AACA,MAAM,IAAI,CAAC,GAAG,CAAC;AACf,MAAM,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxF,QAAQ,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AACvC,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC;AACvC,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC;AACpC,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC3D,MAAM,MAAM,GAAG,CAAC;AAChB,MAAM,MAAM,EAAE;AACd,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM;AAC3B,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3C,MAAM,GAAG,EAAE;AACX,IAAI;AACJ;AACA,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACnC,IAAI,OAAO,GAAG,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,OAAO;AACX,EAAE;AACF,EAAE,SAAS,YAAY,EAAE,MAAM,EAAE;AACjC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,EAAE,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;AAC7E,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,OAAO,IAAI,UAAU,EAAE,CAAC;AACvD,IAAI,IAAI,GAAG,GAAG,CAAC;AACf;AACA,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC;AACtC;AACA,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,IAAI,MAAM,GAAG,CAAC;AAClB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;AACnC,MAAM,MAAM,EAAE;AACd,MAAM,GAAG,EAAE;AACX,IAAI;AACJ;AACA,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5D,IAAI,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;AACnC;AACA,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE;AACxB;AACA,MAAM,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAClD;AACA,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC;AAClC,MAAM,IAAI,CAAC,GAAG,CAAC;AACf,MAAM,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACxF,QAAQ,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC;AACvC,QAAQ,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,MAAM,CAAC;AACnC,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC3D,MAAM,MAAM,GAAG,CAAC;AAChB,MAAM,GAAG,EAAE;AACX,IAAI;AACJ;AACA,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC;AACtC;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM;AAC3B,IAAI,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5C,MAAM,GAAG,EAAE;AACX,IAAI;AACJ,IAAI,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,GAAG,MAAM;AAClB,IAAI,OAAO,GAAG,KAAK,IAAI,EAAE;AACzB,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5B,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;AACF,EAAE,SAAS,MAAM,EAAE,MAAM,EAAE;AAC3B,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AACrC,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,MAAM,CAAC;AAChC,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;AAC3C,EAAE;AACF,EAAE,OAAO;AACT,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,MAAM,EAAE;AACZ;AACA;AACA,IAAI,GAAG,GAAG,IAAI;;AAEd,IAAI,+BAA+B,GAAG,GAAG;;ACtHzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,CAAC;AACd;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;AACjB,IAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AACrC,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACrD,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,KAAK,CAAC,mCAAmC;AACrD,IAAI;AACJ,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,CAAC;AACd;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAC7C,MAAM,MAAM,IAAI,KAAK,CAAC,0BAA0B;AAChD,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,eAAe,0BAA0B,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,EAAE;;AAEF;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;AAChB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE;AACxD,QAAQ,MAAM,KAAK,CAAC,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,4CAA4C,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACvJ,MAAM;AACN,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC3D,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,KAAK,CAAC,mCAAmC;AACrD,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;AACf,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO;AAC3B,EAAE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,CAAC;AACtB;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE;AACzB,IAAI,IAAI,CAAC,QAAQ,GAAG;AACpB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;AACf,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO;AAC3B,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;AACjB,IAAI,MAAM,MAAM,0BAA0B,KAAK,CAAC,CAAC,CAAC;AAClD,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AACxC,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK;AACjC,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,UAAU,CAAC,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC;AAC1J,IAAI;AACJ,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,eAAe,8BAA8B;AACpF,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,mCAAmC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;AACnF,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,mCAAmC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE;AACrF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE;AACrD,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,IAAI,IAAI,CAAC,UAAU,GAAG;AACtB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU;AACvD,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU;AACvD,EAAE;;AAEF;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;AACjB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AACpC,EAAE;;AAEF;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;AACjB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AACpC,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AACrD,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK;AACrD,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAGC,+BAAK,CAAC,QAAQ,EAAE,IAAI;AACjD,EAAE,OAAO,IAAI,CAAC;AACd,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,MAAM;AACV;AACA;AACA;AACA,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,QAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,KAAK;AACxD;AACA;AACA,EAAE,MAAM,KAAK,GAAG;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG;AACzB,EAAE;;AAEF;AACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC;AACnB,EAAE,OAAO,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAClC,IAAI,EAAE;AACN,EAAE;;AAEF;AACA,EAAE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC;;AAExD;AACA,EAAE,IAAI,IAAI,GAAG,EAAC;AACd,EAAE,IAAI,MAAM,GAAG,EAAC;AAChB,EAAE,IAAI,OAAO,GAAG,EAAC;AACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAChC;AACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;AACnD,IAAI;;AAEJ;AACA,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,WAAW,IAAI;AACvC,IAAI,IAAI,IAAI;;AAEZ;AACA,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE;AACnB,MAAM,IAAI,IAAI;AACd,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,IAAI;AAC7C,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;AAC5D,IAAI,MAAM,IAAI,WAAW,CAAC,wBAAwB;AAClD,EAAE;;AAEF,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,QAAM,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,KAAK;AAChD,EAAE,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;AAChD,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,WAAW,IAAI;AACpC,EAAE,IAAI,GAAG,GAAG;;AAEZ,EAAE,IAAI,IAAI,GAAG,EAAC;AACd,EAAE,IAAI,MAAM,GAAG,EAAC;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxC;AACA,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,IAAI;;AAEZ;AACA,IAAI,OAAO,IAAI,GAAG,WAAW,EAAE;AAC/B,MAAM,IAAI,IAAI;AACd,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAC7C,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,WAAW,GAAG,IAAI,CAAC,CAAC;AAC3D,EAAE;;AAEF;AACA,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,IAAI,CAAC,EAAE;AAC3C,MAAM,GAAG,IAAI;AACb,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK;AACpE,EAAE,OAAO,IAAI,CAAC;AACd,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE;AACnB,MAAM,OAAOA,QAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW;AAChD,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE;AACnB,MAAM,OAAOD,QAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;AACtD,IAAI;AACJ,GAAG;AACH;;ACxVO,MAAM,MAAM,GAAG,OAAO,CAAC;AAC9B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,QAAQ,EAAE,kCAAkC;AAC9C,EAAE,WAAW,EAAE;AACf,CAAC;;AAE0B,OAAO,CAAC;AACnC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,QAAQ,EAAE,kCAAkC;AAC9C,EAAE,WAAW,EAAE;AACf,CAAC;;AAEwB,OAAO,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,QAAQ,EAAE,mCAAmC;AAC/C,EAAE,WAAW,EAAE;AACf,CAAC;;AAE6B,OAAO,CAAC;AACtC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,gBAAgB;AACxB,EAAE,QAAQ,EAAE,mCAAmC;AAC/C,EAAE,WAAW,EAAE;AACf,CAAC;;AAEwB,OAAO,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,QAAQ,EAAE,kCAAkC;AAC9C,EAAE,WAAW,EAAE;AACf,CAAC;;AAE6B,OAAO,CAAC;AACtC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,gBAAgB;AACxB,EAAE,QAAQ,EAAE,kCAAkC;AAC9C,EAAE,WAAW,EAAE;AACf,CAAC;;AAE2B,OAAO,CAAC;AACpC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,cAAc;AACtB,EAAE,QAAQ,EAAE,mCAAmC;AAC/C,EAAE,WAAW,EAAE;AACf,CAAC;;AAEgC,OAAO,CAAC;AACzC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,mBAAmB;AAC3B,EAAE,QAAQ,EAAE,mCAAmC;AAC/C,EAAE,WAAW,EAAE;AACf,CAAC;;AAEsB,OAAO,CAAC;AAC/B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,QAAQ,EAAE,kCAAkC;AAC9C,EAAE,WAAW,EAAE;AACf,CAAC;;AC7DM,MAAM,SAAS,GAAG,KAAK,CAAC;AAC/B,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,QAAQ,EAAE;AACZ,CAAC;;AAE2B,KAAK,CAAC;AAClC,EAAE,IAAI,EAAE,cAAc;AACtB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,QAAQ,EAAE;AACZ,CAAC;;ACZD,IAAI,QAAQ,GAAGC,QAAM;;AAElB,IAAC,GAAG,GAAG;AACV,EAAE,CAAC,CACC,MAAM,GAAG;AACb,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;;AAExB,SAASA,QAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE;AAClC,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE;AACjB,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;AACtB,EAAE,IAAI,SAAS,GAAG,MAAM;;AAExB,EAAE,MAAM,GAAG,IAAI,GAAG,EAAE;AACpB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG;AACtC,IAAI,GAAG,IAAI,GAAG;AACd,EAAE;AACF,EAAE,MAAM,GAAG,GAAG,MAAM,EAAE;AACtB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG;AACtC,IAAI,GAAG,MAAM,CAAC;AACd,EAAE;AACF,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB;AACA,EAAEA,QAAM,CAAC,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC;AACvC;AACA,EAAE,OAAO;AACT;;AAEA,IAAID,QAAM,GAAG,IAAI;;AAEjB,IAAI,KAAK,GAAG;AACZ,IAAI,MAAM,GAAG,IAAI;;AAEjB,SAAS,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE;AAC3B,EAAE,IAAI,GAAG,MAAM;AACf,MAAM,MAAM,GAAG,MAAM,IAAI;AACzB,MAAM,KAAK,IAAI;AACf,MAAM,OAAO,GAAG;AAChB,MAAM;AACN,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM;;AAEpB,EAAE,GAAG;AACL,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;AACpB,MAAM,MAAM,IAAI,UAAU,CAAC,yBAAyB;AACpD,IAAI;AACJ,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;AACtB,IAAI,GAAG,IAAI,KAAK,GAAG;AACnB,QAAQ,CAAC,CAAC,GAAG,MAAM,KAAK;AACxB,QAAQ,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AACzC,IAAI,KAAK,IAAI,CAAC;AACd,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK;;AAErB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM;;AAE/B,EAAE,OAAO;AACT;;AAEA,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;;AAExB,IAAI,MAAM,GAAG,UAAU,KAAK,EAAE;AAC9B,EAAE;AACF,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,IAAI,KAAK,GAAG,EAAE,GAAG;AACjB,iBAAiB;AACjB;AACA,CAAC;;AAED,IAAI,MAAM,GAAG;AACb,IAAI,MAAM,EAAE;AACZ,IAAI,MAAM,EAAEA;AACZ,IAAI,cAAc,EAAE;AACpB,CAAC;;AAED,IAAI,YAAY,GAAG,MAAM;;ACtFzB;AACA;AACA;AACA;AACA;AACO,MAAMA,QAAM,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK;AAC5C,EAAE,MAAM,IAAI,GAAGE,YAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;AACzC,EAAE,OAAO,CAAC,IAAI,EAAEA,YAAM,CAAC,MAAM,CAAC,KAAK;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,KAAK;AACrD,EAAEA,YAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM;AACnC,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACO,MAAM,cAAc,GAAG,CAAC,GAAG,KAAK;AACvC,EAAE,OAAOA,YAAM,CAAC,cAAc,CAAC,GAAG;AAClC;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;AACxC,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC;AACtB,EAAE,MAAM,UAAU,GAAGC,cAAqB,CAAC,IAAI;AAC/C,EAAE,MAAM,YAAY,GAAG,UAAU,GAAGA,cAAqB,CAAC,IAAI;;AAE9D,EAAE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,GAAG,IAAI;AAClD,EAAEC,QAAe,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,EAAEA,QAAe,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU;AACzC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY;;AAEhC,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK;AACrC,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS;AAChC,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAGC,QAAa,CAAC,KAAK;AAChD,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAGA,QAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvE,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,YAAY;;AAEzD,EAAE,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE;AAClC,IAAI,MAAM,IAAI,KAAK,CAAC,kBAAkB;AACtC,EAAE;;AAEF,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,IAAI,OAAO;AACX,EAAE,CAAC,MAAM;AACT,IAAI,MAAM,IAAI,iEAAiE,CAAC;;AAEhF,IAAI;AACJ,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC1B,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AAC1B,MAAM,IAAI,CAAC,KAAK,YAAY,UAAU;AACtC,MAAMC,QAAU,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK;AACpC;AACA,EAAE;AACF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,CAAC;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,GAAG;AAClB,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,EAAE;AACF;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK;AACtC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG;AAC7B,EAAE,QAAQ,OAAO;AACjB,IAAI,KAAK,CAAC;AACV,MAAM,OAAO,UAAU;AACvB,QAAQ,KAAK;AACb,QAAQ,SAAS,CAAC,IAAI,CAAC;AACvB,iDAAiD,CAAC,IAAI,KAAK,SAAS,CAAC;AACrE;AACA,IAAI;AACJ,MAAM,OAAO,UAAU;AACvB,QAAQ,KAAK;AACb,QAAQ,SAAS,CAAC,IAAI,CAAC;AACvB,qDAAqD,IAAI,IAAI,MAAM,CAAC,OAAO;AAC3E;AACA;AACA;;AAkBA;AACA,MAAM,KAAK,GAAG,IAAI,OAAO;;AAEzB;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,GAAG,IAAI;AACzB,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG;AACjC,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE;AACzB,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG;AAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS;AAC5B,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,MAAM,GAAG,CAAC;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;AAChD;AACA,IAAI,IAAI,CAAC,IAAI,GAAG;AAChB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG;AACnB;AACA,IAAI,IAAI,CAAC,SAAS,GAAG;AACrB;AACA,IAAI,IAAI,CAAC,KAAK,GAAG;;AAEjB;AACA;AACA;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG;AAChB,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,KAAK,CAAC,GAAG;AACf,IAAI,OAAO;AACX,EAAE;;AAEF;AACA,EAAE,IAAI,UAAU,CAAC,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,EAAE;;AAEF;AACA,EAAE,IAAI,UAAU,CAAC,GAAG;AACpB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,EAAE;;AAEF;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,QAAQ,IAAI,CAAC,OAAO;AACxB,MAAM,KAAK,CAAC,EAAE;AACd,QAAQ,6DAA6D,IAAI;AACzE,MAAM;AACN,MAAM,KAAK,CAAC,EAAE;AACd,QAAQ,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG;;AAEpC,QAAQ,IAAI,IAAI,KAAK,WAAW,EAAE;AAClC,UAAU,MAAM,IAAI,KAAK,CAAC,0CAA0C;AACpE,QAAQ;;AAER;AACA,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE;AAC7C,UAAU,MAAM,IAAI,KAAK,CAAC,oDAAoD;AAC9E,QAAQ;;AAER,QAAQ;AACR,UAAU,GAAG,CAAC,QAAQ;AACtB,6DAA6D,SAAS;AACtE;AACA;AACA,MAAM;AACN,MAAM,SAAS;AACf,QAAQ,MAAM,KAAK;AACnB,UAAU,CAAC,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,0CAA0C;AAChG;AACA,MAAM;AACN;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,QAAQ,IAAI,CAAC,OAAO;AACxB,MAAM,KAAK,CAAC,EAAE;AACd,QAAQ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AACtC,QAAQ,MAAM,SAAS,GAAGC,MAAa,CAAC,IAAI,EAAE,MAAM;AACpD,QAAQ;AACR,UAAU,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS;AAC3C;AACA,MAAM;AACN,MAAM,KAAK,CAAC,EAAE;AACd,QAAQ,iDAAiD,IAAI;AAC7D,MAAM;AACN,MAAM,SAAS;AACf,QAAQ,MAAM,KAAK;AACnB,UAAU,CAAC,4BAA4B,EAAE,IAAI,CAAC,OAAO,CAAC,0CAA0C;AAChG;AACA,MAAM;AACN;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE;AACjB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK;AACjC,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9B,IAAI,MAAM,OAAO;AACjB;AACA,QAAQ;AACR;AACA,IAAI;AACJ,MAAM,OAAO;AACb,MAAM,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;AAChC,MAAM,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;AACtC,MAAMC,MAAa,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS;AACrD;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE;AAClB,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI;AAC5B,EAAE;;AAEF;AACA;AACA;AACA,EAAE,MAAM,CAAC,GAAG;AACZ,IAAI,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;AAC9B,EAAE;;AAEF,EAAE,IAAI,CAAC,GAAG;AACV,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,GAAG;AAC9B,IAAI,OAAO;AACX,EAAE;;AAEF;;AAEA,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,GAAG;AAChD,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE;AACvB,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AACvB,MAAM,OAAO;AACb,IAAI;;AAEJ,IAAI,MAAM,KAAK,uBAAuB,KAAK;AAC3C,IAAI,IAAI,KAAK,YAAY,GAAG,EAAE;AAC9B;AACA,MAAM,OAAO;AACb,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE;AAC5F;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG;AAClD,MAAM,OAAO,IAAI,GAAG;AACpB,QAAQ,OAAO;AACf,QAAQ,IAAI;AACZ,iDAAiD,SAAS;AAC1D,QAAQ,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK;AACzD;AACA,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;AAC1C;AACA;AACA;AACA,MAAM,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG;AAC3C,MAAM,MAAM,MAAM;AAClB;AACA,SAASC,MAAa,CAAC,SAAS,CAAC;AACjC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM;AAC7C,IAAI,CAAC,MAAM;AACX;AACA;AACA,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACxC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,MAAM,MAAM,IAAI,KAAK,CAAC,uCAAuC;AAC7D,IAAI;;AAEJ,IAAI,IAAI,EAAE,MAAM,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE;AAC/C,MAAM,MAAM,IAAI,KAAK,CAAC,gBAAgB;AACtC,IAAI;;AAEJ,IAAI,QAAQ,OAAO;AACnB,MAAM,KAAK,CAAC,EAAE;AACd,QAAQ,IAAI,IAAI,KAAK,WAAW,EAAE;AAClC,UAAU,MAAM,IAAI,KAAK;AACzB,YAAY,CAAC,qCAAqC,EAAE,WAAW,CAAC,gBAAgB;AAChF;AACA,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK;AAC5D,QAAQ;AACR,MAAM;AACN,MAAM,KAAK,CAAC,EAAE;AACd,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK;AAC3D,QAAQ,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;AACnD,MAAM;AACN,MAAM,SAAS;AACf,QAAQ,MAAM,IAAI,KAAK,CAAC,iBAAiB;AACzC,MAAM;AACN;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,QAAQ,CAAC,CAAC,MAAM,EAAE;AAC3B,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM;AAC5C,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE;AACjC,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM;AACrC,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK;AAClD,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE;AAC1B,MAAM,MAAM,IAAI,KAAK,CAAC,kBAAkB;AACxC,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,WAAW,CAAC,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK;AACxC,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAC1C,IAAI,MAAM,cAAc,GAAG,MAAM;AACjC,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,aAAa;AACjE;AACA,IAAI,IAAI,cAAc,CAAC,UAAU,KAAK,KAAK,CAAC,aAAa,EAAE;AAC3D,MAAM,MAAM,IAAI,KAAK,CAAC,kBAAkB;AACxC,IAAI;AACJ,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ;AAC/C,MAAM,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;AAClC;AACA,IAAI,MAAM,MAAM,GAAG,IAAIC,MAAa;AACpC,MAAM,KAAK,CAAC,aAAa;AACzB,MAAM,KAAK,CAAC,UAAU;AACtB,MAAM,WAAW;AACjB,MAAM;AACN;AACA,IAAI,MAAM,GAAG;AACb,MAAM,KAAK,CAAC,OAAO,KAAK;AACxB,UAAU,GAAG,CAAC,QAAQ,kDAAkD,MAAM;AAC9E,UAAU,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM;AAC1C,IAAI,OAAO,gCAAgC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AAC3E,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,YAAY,CAAC,CAAC,YAAY,EAAE;AACrC,IAAI,IAAI,MAAM,GAAG;AACjB,IAAI,MAAM,IAAI,GAAG,MAAM;AACvB,MAAM,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAGL,QAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrE,MAAM,MAAM,IAAI;AAChB,MAAM,OAAO;AACb,IAAI;;AAEJ,IAAI,IAAI,OAAO,qBAAqB,IAAI,EAAE;AAC1C,IAAI,IAAI,KAAK,qBAAqB,WAAW;AAC7C,IAAI,yBAAyB,CAAC,OAAO,MAAM,EAAE,EAAE;AAC/C;AACA,MAAM,OAAO,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG;AACf,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,qBAAqB,IAAI,EAAE;AACtC,IAAI;;AAEJ,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE;AACxC,MAAM,MAAM,IAAI,UAAU,CAAC,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAC3D,IAAI;;AAEJ,IAAI,MAAM,UAAU,GAAG;AACvB,IAAI,MAAM,aAAa,qBAAqB,IAAI,EAAE,EAAC;AACnD,IAAI,MAAM,UAAU,GAAG,IAAI,GAAE;AAC7B,IAAI,MAAM,IAAI,GAAG,MAAM,GAAG;AAC1B,IAAI,MAAM,aAAa,GAAG,IAAI,GAAG;;AAEjC,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI;AAC3E,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE;AAC9B,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI;;AAExD,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK;;AAEhC,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAChD,MAAM,MAAM,KAAK,CAAC,wDAAwD;AAC1E,IAAI;;AAEJ;AACA,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM;;AAErC,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AAC1C,EAAE,QAAQ,MAAM,CAAC,CAAC,CAAC;AACnB;AACA,IAAI,KAAK,GAAG,EAAE;AACd,MAAM,MAAM,OAAO,GAAG,IAAI,IAAI;AAC9B,MAAM,OAAO;AACb,+BAA+B,SAAS,CAAC,MAAM;AAC/C,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACrD;AACA,IAAI;AACJ,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE;AAC3B,MAAM,MAAM,OAAO,GAAG,IAAI,IAAI;AAC9B,MAAM,OAAO,uBAAuB,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7E,IAAI;AACJ,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE;AACxB,MAAM,MAAM,OAAO,GAAG,IAAI,IAAI;AAC9B,MAAM,OAAO,uBAAuB,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1E,IAAI;AACJ,IAAI,SAAS;AACb,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;AACxB,QAAQ,MAAM,KAAK;AACnB,UAAU;AACV;AACA,MAAM;AACN,MAAM,OAAO,uBAAuB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACnE,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK;AAC3C,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;AACrB,EAAE,IAAI,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE;AACnC,IAAI,MAAM,KAAK,CAAC,CAAC,2BAA2B,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAClE,EAAE;;AAEF,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM;AAC9B,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC1C,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG;AACzB,IAAI,OAAO;AACX,EAAE,CAAC,MAAM;AACT,IAAI,OAAO;AACX,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,KAAK;AAC3C,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;AACrB,EAAE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM;AAC9B,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE;AACnB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AACjC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG;AACzB,IAAI,OAAO;AACX,EAAE,CAAC,MAAM;AACT,IAAI,OAAO;AACX,EAAE;AACF;;AAEA,MAAM,WAAW,GAAG;AACpB,MAAM,YAAY,GAAG;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,KAAK;AAChD,EAAE,MAAM,UAAU,GAAGF,cAAqB,CAAC,OAAO;AAClD,EAAE,MAAM,UAAU,GAAG,UAAU,GAAGA,cAAqB,CAAC,IAAI;AAC5D,EAAE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU;AAChE,EAAEC,QAAe,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;AACnC,EAAEA,QAAe,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU;AACzC,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU;AACjC,EAAE,OAAO;AACT;;AAEA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB;;ACnlBxC,MAAM,MAAM,GAAG,KAAK,CAAC;AAC5B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,QAAQ,EAAE;AACZ,CAAC;;AAE0B,KAAK,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,aAAa;AACrB,EAAE,QAAQ,EAAE;AACZ,CAAC;;ACyBD;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AACrD,IAAI,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9D,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACzB,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;AACrC,IAAI,OAAO,MAAM;AACjB,CAAC;;ACvCM,MAAM,UAAU,GAAG;AAC1B,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,KAAK,EAAE,IAAI;AACf,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,QAAQ;AACrB,CAAC;;ACjBD;;;AAIsB,OAAO,CAAC;AAC9B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,QAAQ;AAChB,EAAE,QAAQ,EAAE,kEAAkE;AAC9E,EAAE,WAAW,EAAE;AACf,CAAC;;AAEwB,OAAO,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,QAAQ,EAAE,mEAAmE;AAC/E,EAAE,WAAW,EAAE;AACf,CAAC;;AAEM,MAAM,SAAS,GAAG,OAAO,CAAC;AACjC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,QAAQ,EAAE,kEAAkE;AAC9E,EAAE,WAAW,EAAE;AACf,CAAC;;AAE2B,OAAO,CAAC;AACpC,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,IAAI,EAAE,cAAc;AACtB,EAAE,QAAQ,EAAE,mEAAmE;AAC/E,EAAE,WAAW,EAAE;AACf,CAAC;;ACxBD;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,GAAG,CAAC,GAAG,KAAK;AACzC,IAAI,IAAI,KAAK,GAAG,GAAG;AACnB,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAChC,QAAQ,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;AAC7C,IAAI;AACJ,IAAI,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9C,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1D,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,CAAC;AACM,MAAM,gBAAgB,GAAG,CAAC,KAAK,KAAK;AAC3C,IAAI,IAAI,GAAG,GAAG,EAAE;AAChB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACrD,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,CAAC,GAAG,KAAK;AACrC,IAAI,IAAI;AACR,QAAQ,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG;AACjC;AACA;AACA;AACA,QAAQ,IAAI,SAAS,CAAC,IAAI,GAAG,EAAE,EAAE;AACjC,YAAY,MAAM,EAAE,GAAGO,MAAe,CAAC,SAAS,CAAC,KAAK,CAAC;AACvD;AACA;AACA,YAAY,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE;AACjD;AACA;AACA,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE;AACd,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG;AAChB,IAAI,MAAM,EAAE,CAAC,KAAK,KAAK;AACvB,QAAQ,OAAO,YAAY,CAAC,KAAK,CAAC;AAClC,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,CAAC,KAAK,KAAK;AACtB,QAAQ,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAC7C,QAAQ,MAAM,SAAS,GAAGC,MAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACnD,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK;AACnD,IAAI,CAAC;AACL,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;AACrB,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AAC5C,IAAI,CAAC;AACL,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;AACrB,QAAQ,IAAI,GAAG;AACf,QAAQ,IAAI;AACZ,YAAY,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9E,QAAQ;AACR,QAAQ,OAAO,CAAC,EAAE;AAClB;AACA,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,YAAY,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,EAAEA,MAAY,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAC7E,QAAQ;AACR,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;AACvC,YAAY,MAAM,KAAK,CAAC,kGAAkG,CAAC;AAC3H,QAAQ;AACR;AACA;AACA,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK;AACvD,IAAI,CAAC;AACL,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;AACrB,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACzC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,IAAI,CAAC;AACL,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK;AACxB,QAAQ,OAAO,YAAY,CAAC,KAAK,CAAC;AAClC,IAAI,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG;AAChB,IAAI,YAAY,EAAE,CAAC,KAAK,KAAK;AAC7B,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,QAAQ,OAAO,gBAAgB,CAACD,MAAe,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC5E,IAAI,CAAC;AACL,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;AACrB,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC5C,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAChE,IAAI,CAAC;AACL,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;AACrB,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC5C,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;AACvC;AACA,YAAY,OAAO,CAAC,IAAI,CAAC,4IAA4I,CAAC;AACtK,YAAY,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9E;AACA;AACA,QAAQ;AACR,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnC,IAAI,CAAC;AACL,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;AACrB,QAAQ,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE;AACzC,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,IAAI,CAAC;AACL,IAAI,MAAM,EAAE,CAAC,KAAK,KAAK;AACvB,QAAQ,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,IAAI,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACO,MAAM,QAAQ,GAAG;AACxB,IAAI,MAAM,EAAE;AACZ,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,MAAM,EAAE,OAAO,CAAC,KAAK;AAC7B,QAAQ,MAAM,EAAE,OAAO,CAAC,YAAY;AACpC,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,MAAM,EAAE,OAAO,CAAC,IAAI;AAC5B,QAAQ,MAAM,EAAE,OAAO,CAAC,IAAI;AAC5B,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,MAAM,EAAE,OAAO,CAAC,IAAI;AAC5B,QAAQ,MAAM,EAAE,OAAO,CAAC,IAAI;AAC5B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,MAAM,EAAE,OAAO,CAAC,OAAO;AAC/B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,MAAM,EAAE,OAAO,CAAC,IAAI;AAC5B,QAAQ,MAAM,EAAE,OAAO,CAAC,IAAI;AAC5B,KAAK;AACL,CAAC;;ACjJD;AACA;AACA;AACA;AACA;AACO,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;AACvC,IAAI,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;AAChC,IAAI,IAAI,CAAC,OAAO;AAChB,QAAQ,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACvC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACjC,IAAI,MAAM,SAAS,GAAGP,QAAe,CAAC,IAAI,EAAE,IAAI,UAAU,CAACD,cAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,IAAI,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;;AC1BM,MAAM,2BAAA,GAA4D;AAAA,EACvE;AAAA,IACE,UAAU,mBAAA,CAAoB,IAAA;AAAA,IAC9B,KAAA,EAAO;AAAA,GACT;AAAA,EACA;AAAA,IACE,UAAU,mBAAA,CAAoB,KAAA;AAAA,IAC9B,KAAA,EAAO;AAAA,GACT;AAAA,EACA;AAAA,IACE,UAAU,mBAAA,CAAoB,OAAA;AAAA,IAC9B,KAAA,EAAO;AAAA,GACT;AAAA,EACA;AAAA,IACE,UAAU,mBAAA,CAAoB,MAAA;AAAA,IAC9B,KAAA,EAAO;AAAA,GACT;AAAA,EACA;AAAA,IACE,UAAU,mBAAA,CAAoB,KAAA;AAAA,IAC9B,KAAA,EAAO;AAAA;AAEX;AAEO,MAAM,2BAAA,GAA8B,CACzC,QAAA,KAC2C;AAC3C,EAAA,OAAO,2BAAA,CAA4B,IAAA,CAAK,CAAA,KAAA,KAAS,KAAA,CAAM,aAAa,QAAQ,CAAA;AAC9E;AAEO,MAAM,kBAAA,GAAqB,CAChC,QAAA,EACA,KAAA,KACG;AACH,EAAA,IAAI;AACF,IAAA,MAAA,CAAO,UAAU,KAAK,CAAA;AACtB,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,GAAA,EAAK;AACZ,IAAA,OAAO,KAAA;AAAA,EACT;AACF;;AC7CO,IAAK,kBAAA,qBAAAU,mBAAAA,KAAL;AACL,EAAAA,oBAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,oBAAA,QAAA,CAAA,GAAS,QAAA;AAHC,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;AAaL,MAAM,cAAA,GAAwC;AAAA,EACnD;AAAA,IACE,IAAA,EAAM,eAAA;AAAA,IACN,GAAA,EAAK,QAAA;AAAA,IACL,QAAA,EAAU,OAAA;AAAA,IACV,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,GAAA,EAAK,QAAA;AAAA,IACL,QAAA,EAAU,OAAA;AAAA,IACV,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,GAAA,EAAK,MAAA;AAAA,IACL,QAAA,EAAU,SAAA;AAAA,IACV,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,aAAA;AAAA,IACL,QAAA,EAAU,SAAA;AAAA,IACV,KAAA,EAAO,WAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,GAAA,EAAK,KAAA;AAAA,IACL,QAAA,EAAU,SAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,GAAA,EAAK,UAAA;AAAA,IACL,QAAA,EAAU,SAAA;AAAA,IACV,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,GAAA,EAAK,MAAA;AAAA,IACL,QAAA,EAAU,SAAA;AAAA,IACV,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,GAAA,EAAK,aAAA;AAAA,IACL,QAAA,EAAU,QAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,GAAA,EAAK,aAAA;AAAA,IACL,QAAA,EAAU,QAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,GAAA,EAAK,YAAA;AAAA,IACL,QAAA,EAAU,QAAA;AAAA,IACV,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,GAAA,EAAK,cAAA;AAAA,IACL,QAAA,EAAU,QAAA;AAAA,IACV,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,GAAA,EAAK,aAAA;AAAA,IACL,QAAA,EAAU,QAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa;AAAA;AAEjB;AAEO,MAAM,sBAAsB,MAA2C;AAC5E,EAAA,MAAM,MAA2C,EAAC;AAClD,EAAA,cAAA,CAAe,QAAQ,CAAA,GAAA,KAAO;AAC5B,IAAA,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA,GAAI,GAAA;AAAA,EACjB,CAAC,CAAA;AACD,EAAA,OAAO,GAAA;AACT;AAEO,MAAM,gBAAA,GAAmB,CAAC,GAAA,KAAgB;AAC/C,EAAA,OAAO,cAAA,CAAe,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,QAAQ,GAAG,CAAA;AACnD;;AC9FO,MAAM,cAAc,CAAC;AAAA,EAC1B,KAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAwB;AACtB,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACrC,IAAA,MAAM,MAAqC,EAAC;AAC5C,IAAA,KAAA,CAAM,QAAQ,CAAA,GAAA,KAAO;AACnB,MAAA,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA,GAAI,GAAA;AAAA,IACjB,CAAC,CAAA;AACD,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,SAAA,GAAY,MAAA,CAAgD,EAAE,CAAA;AAEpE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAA,IAAgB,SAAA,CAAU,OAAA,CAAQ,YAAY,CAAA,EAAG;AACnD,MAAA,SAAA,CAAU,OAAA,CAAQ,YAAY,CAAA,EAAG,cAAA,CAAe;AAAA,QAC9C,QAAA,EAAU,QAAA;AAAA,QACV,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,SAAA,CAAU,OAAA,CAAQ,YAAY,CAAA,EAAG,KAAA,EAAM;AACvC,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,IACtB;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,YAAY,CAAC,CAAA;AAExB,EAAA,MAAM,iBAAA,GAAoB,CAAC,GAAA,EAAa,KAAA,KAAkB;AACxD,IAAA,MAAM,MAAA,GAAS,CAAC,GAAG,KAAK,CAAA;AACxB,IAAA,KAAA,MAAW,QAAQ,MAAA,EAAQ;AACzB,MAAA,IAAI,IAAA,CAAK,QAAQ,GAAA,EAAK;AACpB,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA,IACF;AACA,IAAA,cAAA,CAAe,MAAM,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,GAAA,KAAgB;AACvC,IAAA,MAAM,cAAc,YAAA,CAAa,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,QAAQ,GAAG,CAAA;AAC5D,IAAA,cAAA,CAAe,CAAC,GAAG,KAAA,EAAO,EAAE,GAAA,EAAK,OAAO,WAAA,EAAa,KAAA,IAAS,EAAA,EAAI,CAAC,CAAA;AACnE,IAAA,eAAA,CAAgB,GAAG,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,GAAA,KAAgB;AACxC,IAAA,cAAA,CAAe,MAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,GAAA,KAAQ,GAAG,CAAC,CAAA;AAAA,EACvD,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,MAAA,KAAyC;AAClE,IAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG;AAC3C,MAAA,MAAM,SAAA,GAAY,aAAa,iBAAA,EAAkB;AACjD,MAAA,MAAM,KAAA,GAAQ,OAAO,KAAA,IAAS,EAAA;AAE9B,MAAA,OACE,MAAA,CAAO,GAAA,CAAI,iBAAA,EAAkB,CAAE,QAAA,CAAS,SAAS,CAAA,IACjD,KAAA,CAAM,iBAAA,EAAkB,CAAE,QAAA,CAAS,SAAS,CAAA;AAAA,IAEhD;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,aAAA,GAAuC,QAAQ,MAAM;AAEzD,IAAA,MAAM,iBAAA,GAAoB,CAAC,QAAQ,CAAA;AACnC,IAAA,IAAI,QAAA,KAAa,mBAAmB,OAAA,EAAS;AAE3C,MAAA,iBAAA,CAAkB,IAAA,CAAK,mBAAmB,KAAK,CAAA;AAAA,IACjD;AAEA,IAAA,OAAO,cAAA,CAAe,MAAA,CAAO,CAAA,MAAA,KAAU,iBAAA,CAAkB,MAAM,KAAK,iBAAA,CAAkB,QAAA,CAAS,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,EACjH,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAC9B,IAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAE,CAAA;AAAA,EACX;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAK,SAAA,EAAU,SAAA,EAAU,QAAO,MAAA,EAC9B,QAAA,EAAA,UAAA,CAAW,QAAQ,CAAA,EACtB,CAAA;AAAA,IACC,aAAA,CACE,MAAA,CAAO,CAAA,MAAA,KAAU,gBAAA,CAAiB,MAAA,CAAO,GAAG,CAAA,KAAM,MAAS,CAAA,CAC3D,GAAA,CAAI,CAAA,MAAA,KAAU;AACb,MAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,MAAA,CAAO,GAAG,CAAA;AAE3C,MAAA,4BACG,KAAA,EAAA,EAAqB,KAAA,EAAO,EAAE,YAAA,EAAc,IAAG,EAC9C,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,YAAA,EAAc,KAAA,EAAM;AAAA,YAC7B,KAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAK,IAAA;AAAA,YACL,MAAA,EAAO,QAAA;AAAA,YAEN,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,SACV;AAAA,wBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,YACvB,SAAA,EAAU,2BAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,CAAC,EAAA,KAAgC;AACpC,oBAAA,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAA,GAAI,EAAA;AAAA,kBAClC,CAAA;AAAA,kBACA,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,kBACvB,UAAU,CAAA,CAAA,KAAK,iBAAA,CAAkB,OAAO,GAAA,EAAK,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBAC3D,MAAA,sBAAS,IAAA,EAAA,EAAK,IAAA,EAAM,OAAO,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,KAAA,EAAM,MAAA,EAAO,CAAA;AAAA,kBACxD,OAAO,OAAA,CAAQ,KAAA;AAAA,kBACf,aAAa,MAAA,CAAO;AAAA;AAAA,eACtB;AAAA,8BACA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,MAAM,gBAAA,CAAiB,MAAA,CAAO,GAAG,CAAA;AAAA,kBAC1C,SAAA,EAAU,uBAAA;AAAA,kBAEV,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B;AAAA;AAAA;AACF,OAAA,EAAA,EA7BQ,OAAO,GA8BjB,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,oBACH,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EACZ,QAAA,EAAA,aAAA,CACE,MAAA;AAAA,MACC,CAAA,MAAA,KACE,gBAAA,CAAiB,MAAA,CAAO,GAAG,CAAA,KAAM,MAAA,IACjC,MAAA,CAAO,QAAA,KAAa,kBAAA,CAAmB,KAAA,IACvC,iBAAA,CAAkB,MAAM;AAAA,MAE3B,GAAA,CAAI,CAAA,MAAA,qBACH,GAAA,CAAC,KAAA,EAAA,EAAqB,WAAU,uBAAA,EAC9B,QAAA,kBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,oBAAA;AAAA,QACV,OAAA,EAAS,MAAM,eAAA,CAAgB,MAAA,CAAO,GAAG,CAAA;AAAA,QAEzC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAK,IAAA,EAAM,EAAA,EAAI,OAAM,MAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,CAAA;AAAA,0BAChD,GAAA,CAAC,QAAK,SAAA,EAAU,SAAA,EAAU,MAAK,IAAA,EAAK,MAAA,EAAO,QAAA,EACxC,QAAA,EAAA,MAAA,CAAO,KAAA,EACV;AAAA;AAAA;AAAA,KACF,EAAA,EATQ,MAAA,CAAO,GAUjB,CACD,CAAA,EACL;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;;ACvJO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,KAA0B;AACxB,EAAA,MAAM,kBAAA,GAAqB,QAAQ,MAAM;AACvC,IAAA,MAAM,MAAwC,EAAC;AAC/C,IAAA,SAAA,CAAU,QAAQ,CAAA,IAAA,KAAQ;AACxB,MAAA,GAAA,CAAI,IAAA,CAAK,QAAQ,CAAA,GAAI,IAAA;AAAA,IACvB,CAAC,CAAA;AACD,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,SAAA,GAAY,MAAA,CAAgD,EAAE,CAAA;AAEpE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAA,IAAgB,SAAA,CAAU,OAAA,CAAQ,YAAY,CAAA,EAAG;AACnD,MAAA,SAAA,CAAU,OAAA,CAAQ,YAAY,CAAA,EAAG,cAAA,CAAe;AAAA,QAC9C,QAAA,EAAU,QAAA;AAAA,QACV,KAAA,EAAO;AAAA,OACR,CAAA;AACD,MAAA,SAAA,CAAU,OAAA,CAAQ,YAAY,CAAA,EAAG,KAAA,EAAM;AACvC,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,IACtB;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,YAAY,CAAC,CAAA;AAE5B,EAAA,MAAM,oBAAA,GAAuB,CAAC,IAAA,EAAc,KAAA,KAAkB;AAC5D,IAAA,MAAM,UAAA,GAAa,CAAC,GAAG,SAAS,CAAA;AAChC,IAAA,KAAA,MAAW,QAAQ,UAAA,EAAY;AAC7B,MAAA,IAAI,IAAA,CAAK,aAAa,IAAA,EAAM;AAC1B,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA,IACF;AACA,IAAA,kBAAA,CAAmB,UAAU,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,IAAA,KAAiB;AAC3C,IAAA,MAAM,iBAAiB,gBAAA,CAAiB,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,aAAa,IAAI,CAAA;AACrE,IAAA,kBAAA,CAAmB;AAAA,MACjB,GAAG,SAAA;AAAA,MACH,EAAE,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,cAAA,EAAgB,SAAS,EAAA;AAAG,KACtD,CAAA;AACD,IAAA,eAAA,CAAgB,CAAA,EAAG,IAAI,CAAA,CAAE,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,IAAA,KAAiB;AAC5C,IAAA,kBAAA,CAAmB,UAAU,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,QAAA,KAAa,IAAI,CAAC,CAAA;AAAA,EACrE,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,OAAA,KAA0C;AAC/D,IAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG;AAC3C,MAAA,MAAM,SAAA,GAAY,aAAa,iBAAA,EAAkB;AACjD,MAAA,OACE,OAAA,CAAQ,SAAA,CAAU,QAAA,CAAS,SAAS,CAAA,IACpC,QAAQ,KAAA,CAAM,iBAAA,EAAkB,CAAE,QAAA,CAAS,SAAS,CAAA;AAAA,IAExD;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,QAAQ,MAAM;AAEtC,IAAA,OAAO,kBAAA,CAAmB,MAAA,CAAO,CAAA,MAAA,KAAU,aAAA,CAAc,MAAM,CAAC,CAAA;AAAA,EAClE,CAAA,EAAE,CAAC,YAAY,CAAC,CAAA;AAEhB,EAAA,IAAI,iBAAA,CAAkB,WAAW,CAAA,EAAG;AAClC,IAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAE,CAAA;AAAA,EACX;AAGA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,MAAA,EAAO,QAAO,QAAA,EAAA,WAAA,EAExC,CAAA;AAAA,IACC,iBAAA,CACE,MAAA,CAAO,CAAA,MAAA,KAAU,kBAAA,CAAmB,MAAA,CAAO,QAAQ,CAAA,KAAM,MAAS,CAAA,CAClE,GAAA,CAAI,CAAA,MAAA,KAAU;AACb,MAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,MAAA,CAAO,QAAQ,CAAA;AAClD,MAAA,MAAM,gBAAA,GACJ,QAAQ,KAAA,CAAM,MAAA,GAAS,KAAK,CAAC,MAAA,CAAO,YAAA,GAAe,OAAA,CAAQ,KAAK,CAAA;AAElE,MAAA,4BACG,KAAA,EAAA,EAA2B,KAAA,EAAO,EAAE,YAAA,EAAc,IAAG,EACpD,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,YAAA,EAAc,KAAA,EAAM;AAAA,YAC7B,KAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAK,IAAA;AAAA,YACL,MAAA,EAAO,QAAA;AAAA,YAEN,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,SACV;AAAA,wBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,YACvB,SAAA,EAAU,2BAAA;AAAA,YAEV,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,GAAA,EAAK,CAAC,EAAA,KAAgC;AACpC,oBAAA,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,GAAI,EAAA;AAAA,kBACvC,CAAA;AAAA,kBACA,KAAA,EAAO,gBAAA;AAAA,kBACP,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,kBACvB,UAAU,CAAA,CAAA,KACR,oBAAA,CAAqB,OAAO,QAAA,EAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBAEtD,wBAAQ,GAAA,CAAC,SAAA,EAAA,EAAU,OAAO,MAAA,CAAO,SAAA,EAAW,MAAM,EAAA,EAAI,CAAA;AAAA,kBACtD,OAAO,OAAA,CAAQ,KAAA;AAAA,kBACf,aAAa,MAAA,CAAO;AAAA;AAAA,eACtB;AAAA,8BACA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,MAAM,mBAAA,CAAoB,MAAA,CAAO,QAAQ,CAAA;AAAA,kBAClD,SAAA,EAAU,uBAAA;AAAA,kBAEV,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B;AAAA;AAAA,SACF;AAAA,QACC,gBAAA,oBACC,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,IAAA;AAAA,YACL,KAAA,EAAM,QAAA;AAAA,YACN,SAAA,EAAU,SAAA;AAAA,YACV,QAAA,EAAA,CAAA,EAAG,OAAO,KAAK,CAAA,qBAAA;AAAA;AAAA;AAAwB,OAAA,EAAA,EAtCnC,OAAO,SAwCjB,CAAA;AAAA,IAEJ,CAAC,CAAA;AAAA,wBACF,KAAA,EAAA,EAAI,SAAA,EAAU,WACZ,QAAA,EAAA,iBAAA,CACE,MAAA,CAAO,YAAU,kBAAA,CAAmB,MAAA,CAAO,QAAQ,CAAA,KAAM,MAAS,CAAA,CAClE,GAAA,CAAI,4BACH,GAAA,CAAC,KAAA,EAAA,EAA0B,WAAU,uBAAA,EACnC,QAAA,kBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,oBAAA;AAAA,QACV,OAAA,EAAS,MAAM,kBAAA,CAAmB,MAAA,CAAO,QAAQ,CAAA;AAAA,QAEjD,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,SAAA,EAAA,EAAU,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,OAAO,SAAA,EAAW,CAAA;AAAA,0BAC9C,GAAA,CAAC,QAAK,SAAA,EAAU,SAAA,EAAU,MAAK,IAAA,EAAK,MAAA,EAAO,QAAA,EACxC,QAAA,EAAA,MAAA,CAAO,KAAA,EACV;AAAA;AAAA;AAAA,KACF,EAAA,EATQ,MAAA,CAAO,QAUjB,CACD,CAAA,EACL;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;;AClJO,MAAM,WAAoC,CAAC;AAAA,EAChD,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,KAAA,GAAQ,OAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,WAAA,GAAc,OAAuB,IAAI,CAAA;AAE/C,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,SAAA,CAAU,CAAA,IAAA,KAAQ,CAAC,IAAI,CAAA;AAAA,IACzB;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,kBAAA,GAAqB,WAAA,CAAY,CAAC,KAAA,KAAsB;AAC5D,IAAA,IACE,WAAW,OAAA,IACX,CAAC,UAAA,CAAW,OAAA,CAAQ,SAAS,KAAA,CAAM,MAAc,CAAA,IACjD,WAAA,CAAY,WACZ,CAAC,WAAA,CAAY,QAAQ,QAAA,CAAS,KAAA,CAAM,MAAc,CAAA,EAClD;AACA,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,IACjB;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,MAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,CAAA,CAAA,KAAK;AACxC,QAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,SAAA,CAAU,KAAK,CAAA;AAAA,MACzC,CAAC,CAAA;AAAA,IACH;AACA,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,mBAAA,CAAoB,aAAa,kBAAkB,CAAA;AAAA,IAC9D,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,kBAAkB,CAAC,CAAA;AAE/B,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,MAAM,cAAA,GAAiB,gBAAgB,SAAS,CAAA,CAAA;AAChD,IAAA,MAAM,UAAA,GAAa,sBAAsB,KAAK,CAAA,CAAA;AAC9C,IAAA,OAAO,CAAA,EAAG,cAAc,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,EACxC,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,gBAAc,UAAA,EACzC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,UAAA;AAAA,QACL,SAAA,EAAU,sBAAA;AAAA,QACV,OAAA,EAAS,YAAA;AAAA,QACT,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,WAAW,EAAA,GAAK,CAAA;AAAA,QAC1B,eAAA,EAAe,MAAA;AAAA,QACf,eAAA,EAAc,MAAA;AAAA,QACd,WAAW,CAAA,CAAA,KAAK;AACd,UAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,YAAA,EAAa;AAAA,UACf;AAAA,QACF,CAAA;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IACC,MAAA,oBACC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA;AAAA,QACL,SAAA,EAAW,CAAA,kBAAA,EAAqB,mBAAA,EAAqB,CAAA,CAAA;AAAA,QACrD,IAAA,EAAK,MAAA;AAAA,QACL,kBAAA,EAAiB,UAAA;AAAA,QAEhB;AAAA;AAAA;AACH,GAAA,EAEJ,CAAA;AAEJ;;ACvFO,MAAM,QAAA,GAAW,CAAC,EAAE,IAAA,GAAO,IAAG,KAAqB;AACxD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,CAAA,EAAE;AAAA;AAAA,SACH;AAAA,wBACD,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,CAAA,EAAE;AAAA;AAAA,SACH;AAAA,wBACD,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,CAAA,EAAE;AAAA;AAAA,SACH;AAAA,wBACD,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,CAAA,EAAE;AAAA;AAAA,SACH;AAAA,wBACD,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,WAAA,EAAY,MAAA;AAAA,YACZ,CAAA,EAAE;AAAA;AAAA,SACH;AAAA,wBACD,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,SAAA;AAAA,YACL,WAAA,EAAY,MAAA;AAAA,YACZ,CAAA,EAAE;AAAA;AAAA;AACH;AAAA;AAAA,GACH;AAEJ,CAAA;;ACrCO,MAAM,SAAA,GAAY,CAAC,EAAE,IAAA,GAAO,IAAG,KAAsB;AAC1D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAO,IAAA;AAAA,MACP,QAAQ,IAAA,GAAO,IAAA;AAAA,MACf,WAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAQ,aAAA;AAAA,MAER,QAAA,kBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,SAAA;AAAA,UACL,CAAA,EAAE;AAAA;AAAA;AACH;AAAA,GACH;AAEJ,CAAA;;ACfO,MAAM,WAAA,GAAc,CAAC,EAAE,IAAA,GAAO,IAAG,KAAwB;AAC9D,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,QAAA,EAAS,UAAA;AAAA,MACT,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,OAAA,EAAQ,eAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,MAAA;AAAA,YACH,EAAA,EAAG,MAAA;AAAA,YACH,CAAA,EAAE,MAAA;AAAA,YACF,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,KAAA;AAAA,YACZ,SAAA,EAAU;AAAA;AAAA,SACZ;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,cAAA;AAAA,YACL,CAAA,EAAE,sjBAAA;AAAA,YACF,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,GACF;AAEJ,CAAA;;ACzBO,MAAM,UAAA,GAAa,CAAC,EAAE,IAAA,GAAO,IAAG,KAAuB;AAC5D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAO,IAAA;AAAA,MACP,MAAA,EAAQ,IAAA;AAAA,MACR,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAO,EAAE,KAAA,EAAO,iBAAA,EAAkB;AAAA,MAElC,QAAA,kBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,SAAA;AAAA,UACL,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA,GACF;AAEJ,CAAA;;ACfO,MAAM,SAAA,GAAY,CAAC,EAAE,IAAA,GAAO,IAAG,KAAsB;AAC1D,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAM,4BAAA;AAAA,MACN,KAAA,EAAO,IAAA;AAAA,MACP,QAAQ,IAAA,GAAO,IAAA;AAAA,MACf,IAAA,EAAK,MAAA;AAAA,MAEL,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAK,SAAA,EACN,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAE,0MAAA,EAA2M,CAAA;AAAA,wBACnN,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,0FAAA,EAA2F;AAAA,OAAA,EACrG;AAAA;AAAA,GACF;AAEJ,CAAA;;ACNA,MAAM,KAAA,GAAkE;AAAA,EACtE,CAAC,mBAAA,CAAoB,IAAI,GAAG,QAAA;AAAA,EAC5B,CAAC,mBAAA,CAAoB,KAAK,GAAG,SAAA;AAAA,EAC7B,CAAC,mBAAA,CAAoB,OAAO,GAAG,WAAA;AAAA,EAC/B,CAAC,mBAAA,CAAoB,MAAM,GAAG,UAAA;AAAA,EAC9B,CAAC,mBAAA,CAAoB,KAAK,GAAG;AAC/B,CAAA;AAEO,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAgC;AAC9D,EAAA,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,QAAA,EAAU,GAAG,WAAU,GAAI,KAAA;AACpD,EAAA,MAAM,QAAQ,IAAA,IAAQ,EAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,MAAM,QAAQ,CAAA;AAEpC,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,4BAAA,EAA+B,QAAQ,CAAA,CAAE,CAAA;AACtD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,cAAA,EAAiB,SAAA,IAAa,EAAE,CAAA,CAAA,EAC9C,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,KAAA,EAAO,CAAA,EAC9B,CAAA;AAEJ;;ACpBA,MAAM,aAAA,GAA8E;AAAA,EAClF,KAAA,EAAO,EAAE,IAAA,EAAM,UAAA,EAAY,YAAY,gBAAA,EAAiB;AAAA,EACxD,OAAA,EAAS,EAAE,IAAA,EAAM,gBAAA,EAAkB,YAAY,kBAAA,EAAmB;AAAA,EAClE,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,YAAY,eAAA,EAAgB;AAAA,EAClD,OAAA,EAAS,EAAE,IAAA,EAAM,cAAA,EAAgB,YAAY,kBAAA;AAC/C,CAAA;AAEO,MAAM,QAA8B,CAAC;AAAA,EAC1C,OAAA,GAAU,MAAA;AAAA,EACV,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,OAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,MAAA,GAAS,cAAc,OAAO,CAAA;AAEpC,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,SAAA,EAAY,OAAO,UAAU,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAI,IAAA,EAAK,OAAA,EACjE,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,MAAM,MAAA,CAAO,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,CAAA,EACrC,CAAA;AAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBAAS,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACjD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAS;AAAA,KAAA,EAClD,CAAA;AAAA,IACC,eAAe,OAAA,oBACd,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,gBAAA;AAAA,QACV,OAAA,EAAS,OAAA;AAAA,QACT,YAAA,EAAW,aAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QAEL,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;;AC9BO,MAAM,QAA8B,CAAC;AAAA,EAC1C,MAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,iBAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,SAAA,GAAY,OAAuB,IAAI,CAAA;AAG7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAU,iBAAA,EAAmB;AAClC,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAqB;AAC1C,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,OAAA,EAAQ;AAAA,IAClC,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,aAAa,CAAA;AAChD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,aAAa,CAAA;AAAA,EAClE,CAAA,EAAG,CAAC,MAAA,EAAQ,iBAAA,EAAmB,OAAO,CAAC,CAAA;AAEvC,EAAA,MAAM,qBAA8D,CAAA,CAAA,KAAK;AACvE,IAAA,IAAI,iBAAA,EAAmB;AACvB,IAAA,IAAI,CAAA,CAAE,MAAA,KAAW,UAAA,CAAW,OAAA,EAAS,OAAA,EAAQ;AAAA,EAC/C,CAAA;AAEA,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,MAAM,SAAA,GAAY,aAAa,IAAI,CAAA,CAAA;AACnC,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,SAAA,EAAW,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE3E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,UAAA;AAAA,MACL,SAAA,EAAU,kBAAA;AAAA,MACV,WAAA,EAAa,kBAAA;AAAA,MACb,eAAa,CAAC,MAAA;AAAA,MAEd,QAAA,kBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,SAAA;AAAA,UACL,SAAA,EAAW,OAAA;AAAA,UACX,IAAA,EAAK,QAAA;AAAA,UACL,YAAA,EAAW,MAAA;AAAA,UACX,iBAAA,EAAiB,KAAA,GAAS,OAAA,IAAW,gBAAA,GAAoB,MAAA;AAAA,UACzD,KAAA;AAAA,UAEE,QAAA,EAAA;AAAA,YAAA,CAAA,KAAA,IAAS,CAAC,iBAAA,qBACV,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACZ,QAAA,EAAA;AAAA,cAAA,KAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAkB,EAAA,EAAI,OAAA,IAAW,kBAC7C,QAAA,EAAA,OAAO,KAAA,KAAU,QAAA,mBAChB,GAAA,CAAC,QAAK,IAAA,EAAK,IAAA,EAAK,QAAO,QAAA,EAAU,QAAA,EAAA,KAAA,EAAM,IAEvC,KAAA,EAEJ,CAAA;AAAA,cAED,CAAC,iBAAA,oBACA,GAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,mBAAkB,YAAA,EAAW,OAAA,EAAQ,OAAA,EAAS,OAAA,EAAS,QAAA,EAAA,MAAA,EAEzE;AAAA,aAAA,EAEJ,CAAA;AAAA,4BAGF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAS,CAAA;AAAA,4BAE1C,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACZ,qBAAW,MAAA,GAAY,MAAA,mBACtB,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAS,OAAA,EAAS,mBAAK,CAAA,EAErD;AAAA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;;ACrFO,MAAM,oBAAoB,CAAC;AAAA,EAChC,WAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA,KAA8B;AAC5B,EAAA,MAAM,QAAA,GAAW,QAAgD,MAAM;AACrE,IAAA,IAAI,aAAa,QAAA,EAAU;AACzB,MAAA,OAAO,2BAAA,CAA4B,aAAa,QAAQ,CAAA;AAAA,IAC1D;AAAA,EACF,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,wBAAA,GAA2B,CAC/B,QAAA,EACA,KAAA,KACG;AACH,IAAA,oBAAA,CAAqB,EAAE,QAAA,EAAU,KAAA,EAAO,CAAA;AAAA,EAC1C,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,MAAA,KAAgD;AACnE,IAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG;AAC3C,MAAA,MAAM,SAAA,GAAY,aAAa,iBAAA,EAAkB;AACjD,MAAA,OACE,MAAA,CAAO,QAAA,CAAS,iBAAA,EAAkB,CAAE,QAAA,CAAS,SAAS,CAAA,IACtD,MAAA,CAAO,KAAA,CAAM,iBAAA,EAAkB,CAAE,QAAA,CAAS,SAAS,CAAA;AAAA,IAEvD;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAoD,QAAQ,MAAM;AACtE,IAAA,OAAO,2BAAA,CAA4B,MAAA,CAAO,CAAA,MAAA,KAAU,WAAA,CAAY,MAAM,CAAC,CAAA;AAAA,EACzE,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,IAAI,mBAAA,CAAoB,WAAW,CAAA,EAAG;AACpC,IAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAE,CAAA;AAAA,EACX;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,MAAA,EAAO,QAAO,QAAA,EAAA,SAAA,EAExC,CAAA;AAAA,IACC,CAAC,WAAA,oBACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EACZ,QAAA,EAAA,mBAAA,CAAoB,GAAA,CAAI,CAAA,MAAA,qBACvB,GAAA,CAAC,KAAA,EAAA,EAA0B,SAAA,EAAU,uBAAA,EACnC,QAAA,kBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,oBAAA;AAAA,QACV,OAAA,EAAS,MAAM,kBAAA,CAAmB,MAAA,CAAO,QAAQ,CAAA;AAAA,QAEjD,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,OAAO,QAAA,EAAU,CAAA;AAAA,0BACtD,GAAA,CAAC,QAAK,SAAA,EAAU,SAAA,EAAU,MAAK,IAAA,EAAK,MAAA,EAAO,QAAA,EACxC,QAAA,EAAA,MAAA,CAAO,KAAA,EACV;AAAA;AAAA;AAAA,KACF,EAAA,EATQ,MAAA,CAAO,QAUjB,CACD,CAAA,EACH,CAAA;AAAA,IAED,eAAe,QAAA,IAAY,WAAA,CAAY,QAAQ,CAAA,yBAC7C,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,EAAE,YAAA,EAAc,KAAA,EAAM;AAAA,UAC7B,KAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAK,IAAA;AAAA,UACL,MAAA,EAAO,QAAA;AAAA,UAEN,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA,OACZ;AAAA,sBACA,IAAA,CAAC,SAAI,KAAA,EAAO,EAAE,OAAO,MAAA,EAAO,EAAG,WAAU,2BAAA,EACvC,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,EAAO;AAAA,YACvB,UAAU,CAAA,CAAA,KACR,wBAAA,CAAyB,YAAY,QAAA,EAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAE/D,KAAA,EACE,WAAA,CAAY,KAAA,CAAM,MAAA,GAAS,CAAA,IAC3B,CAAC,kBAAA,CAAmB,WAAA,CAAY,QAAA,EAAU,WAAA,CAAY,KAAK,CAAA;AAAA,YAE7D,wBACE,GAAA,CAAC,eAAA,EAAA,EAAgB,UAAU,WAAA,CAAY,QAAA,EAAU,MAAM,EAAA,EAAI,CAAA;AAAA,YAE7D,OAAO,WAAA,CAAY,KAAA;AAAA,YACnB,WAAA,EAAa,CAAA,EAAG,WAAA,CAAY,QAAQ,CAAA,GAAA;AAAA;AAAA,SACtC;AAAA,wBACA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,oBAAA,EAAqB;AAAA,YACpC,SAAA,EAAU,uBAAA;AAAA,YAEV,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAI,MAAM,EAAA,EAAI;AAAA;AAAA;AAC3B,OAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;;AC1GA,MAAM,cAAA,GAAiB;AAAA,EACrB,cAAA,EAAgB,OAAA;AAAA,EAChB,gBAAA,EAAkB;AACpB,CAAA;AAEO,MAAM,eAAe,CAAC;AAAA,EAC3B,MAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAAwB;AAEtB,EAAA,SAAA,CAAU,MAAM;AAAA,EAAC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAE5B,EAAA,IAAI,eAAe,EAAC;AACpB,EAAA,IAAI,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC/B,IAAA,YAAA,GAAe;AAAA,MACb,eAAA,EAAiB,OAAO,MAAM,CAAA,CAAA,CAAA;AAAA,MAC9B,GAAG;AAAA,KACL;AAAA,EACF;AAEA,EAAA,IAAI,eAAe,EAAC;AACpB,EAAA,IAAI,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC/B,IAAA,YAAA,GAAe;AAAA,MACb,eAAA,EAAiB,OAAO,MAAM,CAAA,CAAA,CAAA;AAAA,MAC9B,GAAG;AAAA,KACL;AAAA,EACF;AAEA,EAAA,IAAI,kBAAkB,MAAA,KAAW,MAAA;AACjC,EAAA,IAAI,kBAAkB,MAAA,KAAW,MAAA;AAEjC,EAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAU,kBAAA,EACb,+BAAC,KAAA,EAAA,EAAI,KAAA,EAAO,YAAA,EAAc,SAAA,EAAU,sBAAA,EAClC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,aAAA,EAAc,CAAA;AAAA,oBAC5B,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,IAC7B,CAAC,eAAA,oBAAmB,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACpB,OAAA,kBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACf,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAM,OAAA,EAAQ,IAAA,EAAK,eAAA,EAAgB,CAAA,EACzC,CAAA;AAAA,QAGF,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAS,CAAA,CAAA,KAAK;AACZ,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,kBAAA,aAAA,CAAc,EAAE,CAAA;AAAA,gBAClB;AAAA,cACF,CAAA;AAAA,cACA,MAAA,EAAO,QAAA;AAAA,cACP,SAAA,EAAU,QAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cACN,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACA,GAAA,CAAC,QAAK,MAAA,EAAO,QAAA,EAAS,WAAU,iBAAA,EAAkB,IAAA,EAAK,MAAK,QAAA,EAAA,cAAA,EAE5D,CAAA;AAAA,0BACA,GAAA,CAAC,QAAK,MAAA,EAAO,QAAA,EAAS,WAAU,iBAAA,EAAkB,IAAA,EAAK,MAAK,QAAA,EAAA,YAAA,EAE5D;AAAA,SAAA,EACF;AAAA;AAAA,KACF;AAAA,wBACC,KAAA,EAAA,EAAI,KAAA,EAAO,cAAc,SAAA,EAAU,uBAAA,EACjC,WAAC,eAAA,oBAAmB,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACpB,OAAA,kBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAM,MAAA,EAAO,IAAA,EAAK,eAAA,EAAgB,CAAA,EAC1C,CAAA;AAAA,QAGF,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAS,CAAA,CAAA,KAAK;AACZ,gBAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,gBAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,kBAAA,aAAA,CAAc,EAAE,CAAA;AAAA,gBAClB;AAAA,cACF,CAAA;AAAA,cACA,MAAA,EAAO,QAAA;AAAA,cACP,SAAA,EAAU,QAAA;AAAA,cACV,IAAA,EAAK,IAAA;AAAA,cACN,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACA,GAAA,CAAC,QAAK,MAAA,EAAO,QAAA,EAAS,WAAU,iBAAA,EAAkB,IAAA,EAAK,MAAK,QAAA,EAAA,cAAA,EAE5D,CAAA;AAAA,0BACA,GAAA,CAAC,QAAK,MAAA,EAAO,QAAA,EAAS,WAAU,iBAAA,EAAkB,IAAA,EAAK,MAAK,QAAA,EAAA,YAAA,EAE5D;AAAA,SAAA,EACF;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAA;;AC/FA,IAAK,kBAAA,qBAAAC,mBAAAA,KAAL;AACE,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,oBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,oBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,oBAAA,SAAA,CAAA,GAAU,SAAA;AAJP,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA,CAAA;AAYE,MAAM,oBAAoB,CAAC;AAAA,EAChC,OAAA;AAAA,EACA;AACF,CAAA,KAA8B;AAC5B,EAAA,MAAM,CAAC,cAAc,CAAA,GAAI,QAAA,CAAqB,QAAA,CAAS,OAAO,CAAC,CAAA;AAE/D,EAAA,MAAM,kBAAA,GAAqB,OAA8B,IAAI,CAAA;AAC7D,EAAA,MAAM,iBAAA,GAAoB,OAA8B,IAAI,CAAA;AAC5D,EAAA,MAAM,oBAAA,GAAuB,OAA8B,IAAI,CAAA;AAC/D,EAAA,MAAM,kBAAA,GAAqB,OAA8B,IAAI,CAAA;AAC7D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,EAAE,CAAA;AAEnD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA;AAAA,IAClC,SAAA;AAAA,GACF;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAA2B;AACrD,IAAA,gBAAA,CAAiB,EAAE,GAAG,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,EACxC,CAAA;AAEA,EAAA,MAAM,sBAAA,GAAyB,CAAC,SAAA,KAAkC;AAChE,IAAA,gBAAA,CAAiB,EAAE,GAAG,OAAA,EAAS,SAAA,EAAW,CAAA;AAAA,EAC5C,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAiC;AACzD,IAAA,MAAM,UAAA,GAGF;AAAA,MACF,OAAA,EAAS,kBAAA;AAAA,MACT,MAAA,EAAQ,iBAAA;AAAA,MACR,OAAA,EAAS,kBAAA;AAAA,MACT,SAAA,EAAW;AAAA,KACb;AAEA,IAAA,MAAM,UAAA,GAAa,WAAW,QAAQ,CAAA;AAEtC,IAAA,IAAI,UAAA,IAAc,WAAW,OAAA,EAAS;AACpC,MAAA,UAAA,CAAW,QAAQ,cAAA,CAAe;AAAA,QAChC,QAAA,EAAU,QAAA;AAAA,QACV,KAAA,EAAO;AAAA,OACR,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAC1B,GAAA,EACA,MAAA,GAAkB,IAAA,KACf;AACH,IAAA,aAAA,CAAc,GAAG,CAAA;AACjB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,gBAAA,CAAiB,GAAG,CAAA;AAAA,IACtB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,sBAAA,GAAyB,CAAC,QAAA,KAAkC;AAChE,IAAA,MAAM,iBAAiB,cAAA,CAAe,WAAA;AAEtC,IAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,IAAA,IAAI,cAAA,IAAkB,cAAA,CAAe,QAAA,KAAa,QAAA,EAAU;AAC1D,MAAA,KAAA,GAAQ,cAAA,CAAe,KAAA;AAAA,IACzB;AACA,IAAA,gBAAA,CAAiB,EAAE,GAAG,OAAA,EAAS,WAAA,EAAa,EAAE,QAAA,EAAU,KAAA,IAAS,CAAA;AAAA,EACnE,CAAA;AA8CA,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAO,GAAI,QAAQ,MAAM;AACvC,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,QAAQ,KAAA,CAAM,IAAA,CAAK,OAAK,CAAA,CAAE,GAAA,KAAQ,QAAQ,CAAA,EAAG,KAAA;AAAA,MACrD,MAAA,EAAQ,QAAQ,KAAA,CAAM,IAAA,CAAK,OAAK,CAAA,CAAE,GAAA,KAAQ,QAAQ,CAAA,EAAG;AAAA,KACvD;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,CAAQ,KAAK,CAAC,CAAA;AAElB,EAAA,MAAM,wBAAA,GAA2B,CAAC,WAAA,KAAsC;AACtE,IAAA,gBAAA,CAAiB,EAAE,GAAG,OAAA,EAAS,WAAA,EAAa,CAAA;AAAA,EAC9C,CAAA;AAEA,EAAA,MAAM,2BAA2B,MAAM;AACrC,IAAA,MAAM,QAAA,GAAW,EAAE,GAAG,OAAA,EAAQ;AAC9B,IAAA,OAAO,QAAA,CAAS,WAAA;AAChB,IAAA,gBAAA,CAAiB,QAAQ,CAAA;AAAA,EAC3B,CAAA;AAEA,EAAA,MAAM,sBAAA,GAAyB,CAC7B,MAAA,EACA,KAAA,KACG;AACH,IAAA,MAAM,SAAS,OAAA,CAAQ,KAAA,CAAM,OAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,QAAQ,MAAM,CAAA;AAE/D,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA,MAAM,eAAe,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA,GAAA,KAAO,GAAA,CAAI,QAAQ,MAAM,CAAA;AACxE,MAAA,MAAA,GAAS,YAAA,GAAe,aAAa,KAAA,GAAQ,KAAA;AAAA,IAC/C;AAEA,IAAA,gBAAA,CAAiB;AAAA,MACf,GAAG,OAAA;AAAA,MACH,KAAA,EAAO,CAAC,GAAG,MAAA,EAAQ,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ;AAAA,KAClD,CAAA;AACD,IAAA,gBAAA,CAAiB,SAAA,eAA0B;AAAA,EAC7C,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAEb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,IAAG,EAC7B,QAAA,kBAAA,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAA,EAAe,CAAC,KAAA,KACd,sBAAA,CAAuB,UAAU,KAAK,CAAA;AAAA,QAExC,aAAA,EAAe,CAAC,KAAA,KACd,sBAAA,CAAuB,UAAU,KAAK;AAAA;AAAA,KAE1C,EACF,CAAA;AAAA,wBAEC,KAAA,EAAA,EAAI,SAAA,EAAU,8BACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4BAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,gBAAA,EACb,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,YAAA;AAAA,UACP,QAAA,EAAU,CAAA,CAAA,KAAK,eAAA,CAAgB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UAC7C,WAAA,EAAY,QAAA;AAAA,UACZ,wBAAQ,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,QAAA,EAAS,MAAM,EAAA,EAAI;AAAA;AAAA,OACxC,EACF,CAAA;AAAA,sBAEA,GAAA,CAAC,SAAI,SAAA,EAAU,wCAAA,EACZ,iBAAO,IAAA,CAAK,kBAAkB,CAAA,CAAE,GAAA,CAAI,CAAA,IAAA,KAAQ;AAC3C,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MACP,mBAAA,CAAoB,IAA0B,CAAA;AAAA,YAGhD,SAAA,EAAW,CAAA,aAAA,EAAgB,IAAA,KAAS,UAAA,GAAa,WAAW,EAAE,CAAA,CAAA;AAAA,YAE9D,8BAAC,IAAA,EAAA,EAAK,MAAA,EAAO,QAAA,EAAS,IAAA,EAAK,MACxB,QAAA,EAAA,IAAA,EACH;AAAA,WAAA;AAAA,UALK;AAAA,SAMP;AAAA,MAEJ,CAAC,CAAA,EACH,CAAA;AAAA,sBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EAEb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,kBAAA,EAAoB,SAAA,EAAU,SAAA,EACtC,QAAA,kBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,cAAc,cAAA,CAAe,KAAA;AAAA,YAC7B,OAAO,OAAA,CAAQ,KAAA;AAAA,YACf,cAAA,EAAgB,kBAAA;AAAA,YAChB,UAAU,kBAAA,CAAmB,OAAA;AAAA,YAC7B;AAAA;AAAA,SACF,EACF,CAAA;AAAA,wBAEA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,iBAAA,EAAmB,WAAU,SAAA,EACrC,QAAA,kBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,cAAc,cAAA,CAAe,KAAA;AAAA,YAC7B,OAAO,OAAA,CAAQ,KAAA;AAAA,YACf,cAAA,EAAgB,kBAAA;AAAA,YAChB,UAAU,kBAAA,CAAmB,MAAA;AAAA,YAC7B;AAAA;AAAA,SACF,EACF,CAAA;AAAA,wBAEA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,oBAAA,EAAsB,WAAU,SAAA,EACxC,QAAA,kBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,kBAAkB,cAAA,CAAe,SAAA;AAAA,YACjC,WAAW,OAAA,CAAQ,SAAA;AAAA,YACnB,kBAAA,EAAoB,CAAA,CAAA,KAAK,sBAAA,CAAuB,CAAC,CAAA;AAAA,YACjD;AAAA;AAAA,SACF,EACF,CAAA;AAAA,wBAEA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,kBAAA,EAAoB,WAAU,SAAA,EACtC,QAAA,kBAAA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,aAAa,OAAA,CAAQ,WAAA;AAAA,YACrB,oBAAA,EAAsB,CAAA,CAAA,KAAK,wBAAA,CAAyB,CAAC,CAAA;AAAA,YACrD,oBAAA,EAAsB,MAAM,wBAAA,EAAyB;AAAA,YACrD,kBAAA,EAAoB,CAAA,CAAA,KAAK,sBAAA,CAAuB,CAAC,CAAA;AAAA,YACjD;AAAA;AAAA,SACF,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;ACtQO,IAAK,gBAAA,qBAAAC,iBAAAA,KAAL;AACL,EAAAA,kBAAA,YAAA,CAAA,GAAa,aAAA;AACb,EAAAA,kBAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,kBAAA,QAAA,CAAA,GAAS,QAAA;AAHC,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA;AAaL,MAAM,qBAAqB,CAAC;AAAA,EACjC,KAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,KAA+B;AAC7B,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,aAAA;AACH,QAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EAAyB,CAAA;AAAA,MACjD,KAAK,WAAA;AACH,QAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,cAAA,EAAe,MAAM,EAAA,EAAI,CAAA;AAAA,MAC7C,KAAK,QAAA;AACH,QAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,UAAA,EAAW,MAAM,EAAA,EAAI,CAAA;AAAA,MACzC;AACE,QAAA,OAAO,IAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,aAAA;AACH,QAAA,OAAO,kCAAA;AAAA,MACT,KAAK,WAAA;AACH,QAAA,OAAO,qCAAA;AAAA,MACT,KAAK,QAAA;AACH,QAAA,OAAO,qBAAA;AAAA,MACT;AACE,QAAA,OAAO,EAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,aAAA;AACH,QAAA,OAAO,4BAAA;AAAA,MACT,KAAK,WAAA;AACH,QAAA,OAAO,0BAAA;AAAA,MACT,KAAK,QAAA;AACH,QAAA,OAAO,uBAAA;AAAA,MACT;AACE,QAAA,OAAO,EAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,aAAA;AACH,QAAA,OAAO,kCAAA;AAAA,MACT,KAAK,WAAA;AACH,QAAA,OAAO,gCAAA;AAAA,MACT,KAAK,QAAA;AACH,QAAA,OAAO,6BAAA;AAAA,MACT;AACE,QAAA,OAAO,EAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,cAAA,EAAiB,cAAA,EAAgB,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAC5D,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAW,CAAA,oBAAA,EAAuB,cAAc,CAAA,CAAA,EAClD,yBAAc,EACjB,CAAA;AAAA,oBAEA,GAAA,CAAC,SAAI,SAAA,EAAU,uBAAA,EACb,8BAAC,IAAA,EAAA,EAAM,QAAA,EAAA,gBAAA,IAAmB,CAAA,EAC5B,CAAA;AAAA,IAEC,eAAA,oBACC,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wBAAA,EAAyB,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,MAC7B,eAAA,CAAgB,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA;AAAA,MAAE,KAAA;AAAA,MAAI,eAAA,CAAgB,MAAM,EAAE;AAAA,KAAA,EAClE,CAAA;AAAA,oBAGF,IAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,gBAAA;AAAA,QACN,MAAA,EAAO,QAAA;AAAA,QACP,GAAA,EAAI,qBAAA;AAAA,QACJ,SAAA,EAAU,qBAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAK,IAAA,EAAK,OAAA,EAAQ,IAAA,EAAM,EAAA,EAAI,WAAU,0BAAA,EAA2B,CAAA;AAAA,UAAE;AAAA;AAAA;AAAA;AAEtE,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;;ACvGO,MAAM,qBAAA,GAAwB,CAAC,EAAE,OAAA,EAAS,QAAM,KAAyB;AAIhF;;ACFO,MAAM,aAAA,GAAgB,CAAC,EAAC,OAAA,EAAO,KAAyB;AAE3D,EAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,EAAC,OAAA,EAAQ,CAAA;AAC9C,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,KAAiB,eAAA,CAAgB,EAAC,SAAQ,CAAA;AAExD,EAAA,OAAO;AAAA,IACH,YAAA;AAAA,IACA;AAAA,GACJ;AACJ;;ACTO,MAAM,aAAA,GAAgB;AACtB,MAAM,gBAAA,GAAmB;AACzB,MAAM,oBAAA,GAAuB;AAC7B,MAAM,SAAA,GAAY;AAElB,MAAM,mBAAmB,QAAA,CAAS;AAAA,EACxC,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACD,CAAC;;ACKD,MAAM,YAAA,GAAe,cAA6C,MAAS,CAAA;AAQpE,MAAM,gBAA8C,CAAC;AAAA,EAC1D,YAAA,GAAe,OAAA;AAAA,EACf,WAAA,GAAc,IAAA;AAAA,EACd;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAoB,YAAY,CAAA;AAE1D,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAA,IAAe,OAAO,QAAA,KAAa,WAAA,EAAa;AAClD,MAAA,MAAM,OAAO,QAAA,CAAS,eAAA;AACtB,MAAA,IAAA,CAAK,YAAA,CAAa,cAAc,KAAK,CAAA;AACrC,MAAA,OAAO,MAAM;AACX,QAAA,IAAA,CAAK,gBAAgB,YAAY,CAAA;AAAA,MACnC,CAAA;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,WAAW,CAAC,CAAA;AAEvB,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,KAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAa,MAAM,QAAA,CAAS,OAAM,CAAA,KAAM,OAAA,GAAU,SAAS,OAAQ;AAAA,KACrE,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,uBACE,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OAAe,QAAA,EAAS,CAAA;AAAA,EAEnD;AAEA,EAAA,uBACE,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAY,KAAA,EAAO,SAAA,EAAU,UAAA,EAC/B,QAAA,EACH,CAAA,EACF,CAAA;AAEJ;AAEO,MAAM,WAAW,MAAyB;AAC/C,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,4CAA4C,CAAA;AACtE,EAAA,OAAO,GAAA;AACT;;;;","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/atoms/button/Button.tsx","../src/components/atoms/input/Input.tsx","../src/components/atoms/text/Text.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/book.js","../node_modules/lucide-react/dist/esm/icons/box.js","../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../node_modules/lucide-react/dist/esm/icons/circle-fading-plus.js","../node_modules/lucide-react/dist/esm/icons/circle-user.js","../node_modules/lucide-react/dist/esm/icons/circle-x.js","../node_modules/lucide-react/dist/esm/icons/globe.js","../node_modules/lucide-react/dist/esm/icons/image.js","../node_modules/lucide-react/dist/esm/icons/info.js","../node_modules/lucide-react/dist/esm/icons/mail.js","../node_modules/lucide-react/dist/esm/icons/map-pin.js","../node_modules/lucide-react/dist/esm/icons/pin.js","../node_modules/lucide-react/dist/esm/icons/search.js","../node_modules/lucide-react/dist/esm/icons/square-user.js","../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../node_modules/lucide-react/dist/esm/icons/user.js","../node_modules/lucide-react/dist/esm/icons/x.js","../src/components/atoms/icon/custom/DiscordIcon.tsx","../src/components/atoms/icon/custom/GithubIcon.tsx","../src/components/atoms/icon/custom/TelegramIcon.tsx","../src/components/atoms/icon/custom/YoutubeIcon.tsx","../src/components/atoms/icon/custom/XIcon.tsx","../src/components/atoms/icon/Icon.tsx","../src/components/atoms/chain-icon/icons/EthSvg.tsx","../src/components/atoms/chain-icon/icons/ArbSvg.tsx","../src/components/atoms/chain-icon/icons/BaseSvg.tsx","../src/components/atoms/chain-icon/icons/BitcoinSvg.tsx","../src/components/atoms/chain-icon/icons/MaticSvg.tsx","../src/components/atoms/chain-icon/icons/OpSvg.tsx","../src/components/atoms/chain-icon/icons/SolSvg.tsx","../src/components/atoms/chain-icon/icons/ZoraSvg.tsx","../src/components/atoms/chain-icon/icons/CeloSvg.tsx","../src/components/atoms/chain-icon/ChainIcon.tsx","../src/components/atoms/tooltip/Tooltip.tsx","../src/components/pending-transaction/PendingTransaction.tsx","../src/components/molecules/dropdown/Dropdown.tsx","../src/types/records.ts","../src/components/molecules/contenthash/icons/IpfsIcon.tsx","../src/components/molecules/contenthash/icons/OnionIcon.tsx","../src/components/molecules/contenthash/icons/ArweaveIcon.tsx","../src/components/molecules/contenthash/icons/SkynetIcon.tsx","../src/components/molecules/contenthash/icons/SwarmIcon.tsx","../src/components/molecules/contenthash/ContenthashIcon.tsx","../src/components/molecules/alert/Alert.tsx","../src/components/molecules/modal/Modal.tsx","../src/utils/strings.ts","../src/utils/coins.ts","../src/utils/records.ts","../node_modules/@noble/hashes/esm/crypto.js","../node_modules/@noble/hashes/esm/utils.js","../node_modules/@noble/hashes/esm/_md.js","../node_modules/@noble/hashes/esm/_u64.js","../node_modules/@noble/hashes/esm/sha2.js","../node_modules/@noble/hashes/esm/hmac.js","../node_modules/@noble/curves/esm/utils.js","../node_modules/@noble/curves/esm/abstract/modular.js","../node_modules/@noble/curves/esm/abstract/curve.js","../node_modules/@noble/curves/esm/abstract/weierstrass.js","../node_modules/@noble/curves/esm/_shortw_utils.js","../node_modules/@noble/curves/esm/abstract/hash-to-curve.js","../node_modules/@noble/curves/esm/secp256k1.js","../node_modules/@noble/hashes/esm/legacy.js","../node_modules/@noble/hashes/esm/ripemd160.js","../node_modules/@scure/base/lib/esm/index.js","../node_modules/@noble/hashes/esm/sha256.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/base58.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/eosio.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/abbc.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bech32.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/cbor.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/crc32.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/byron.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ada.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ae.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/aib.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bytes.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/aion.js","../node_modules/@noble/hashes/esm/sha512.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/base32.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/algo.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ar.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ardr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ark.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/atom.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/avax.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bitcoin.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bcd.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/bch.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bch.js","../node_modules/@noble/hashes/esm/sha3.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xmr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bcn.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bdx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bnb.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bps.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bsv.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/btc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/btg.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/btm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/bts.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/cca.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ccxx.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/hex.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/celoLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ckb.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/cloLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dash.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dcr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dgb.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/divi.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/doge.js","../node_modules/@noble/hashes/esm/_blake.js","../node_modules/@noble/hashes/esm/blake2.js","../node_modules/@noble/hashes/esm/blake2b.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/dot.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/dot.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/egld.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ela.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/eos.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/etcLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/eth.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/etn.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ewtLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/leb128.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/fil.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/fio.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/firo.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/flow.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/flow.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/zcash.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/flux.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ftmLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/gnoLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/goLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/grin.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/gxc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hbar.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hive.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hns.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/hnt.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/icx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iost.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iota.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iotx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/iris.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/kava.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/kmd.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ksm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/lcc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/lrg.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/lsk.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ltc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/luna.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/mona.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/mrx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nano.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nas.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/near.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/near.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/neo.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nim.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nmc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nostr.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nrgLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/nuls.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/one.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ont.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/poaLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ppc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/qtum.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rbtc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rdd.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rune.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/rvn.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sero.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sol.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/srm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/steem.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/strat.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/strk.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/stx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sui.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/sys.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/tfuel.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/thetaLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/tomoLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/trx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/ttLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vet.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/via.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vlx.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vlxLegacy.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/vsys.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/wan.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/waves.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/wicc.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xch.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xem.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xhv.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xlm.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xrp.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xtz.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/xvg.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/zec.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/zen.js","../node_modules/@ensdomains/address-encoder/dist/esm/coin/zil.js","../node_modules/@ensdomains/address-encoder/dist/esm/consts/coinTypeToNameMap.js","../node_modules/@ensdomains/address-encoder/dist/esm/consts/coinNameToTypeMap.js","../node_modules/@ensdomains/address-encoder/dist/esm/utils/evm.js","../node_modules/@ensdomains/address-encoder/dist/esm/index.js","../src/constants/records/addressConstants.ts","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bytes.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/vendor/base-x.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base32.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base58.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/vendor/varint.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/varint.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/hashes/digest.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/cid.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base36.js","../node_modules/@ensdomains/content-hash/dist/esm/helpers.js","../node_modules/@ensdomains/content-hash/dist/esm/map.js","../node_modules/@ensdomains/content-hash/node_modules/multiformats/src/bases/base64.js","../node_modules/@ensdomains/content-hash/dist/esm/profiles.js","../node_modules/@ensdomains/content-hash/dist/esm/index.js","../src/constants/records/contenthashConstants.ts","../src/constants/records/textConstants.ts","../src/components/select-records-form/text-records/TextRecords.tsx","../src/components/select-records-form/address-record/AddressRecords.tsx","../src/components/select-records-form/contenthash-records/ContenthashRecord.tsx","../src/components/select-records-form/image-records/ImageRecords.tsx","../src/components/select-records-form/SelectRecordsForm.tsx","../src/web3/resolver-abi.ts","../src/utils/resolver.ts","../src/components/ens-records-form/EnsRecordsForm.tsx","../src/hooks/useWaitForTransaction.tsx","../src/hooks/useWeb3Clients.tsx","../src/theme/ThemeProvider.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport \"./Button.css\";\n\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'prefix'> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n loading?: boolean;\n prefix?: ReactNode;\n dataTestId?: string;\n}\n\nconst sizeToClass: Record<ButtonSize, string> = {\n sm: \"ns-btn--sm\",\n md: \"ns-btn--md\",\n lg: \"ns-btn--lg\",\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = \"solid\",\n size = \"md\",\n className = \"\",\n children,\n loading = false,\n disabled,\n prefix,\n dataTestId,\n ...rest\n}) => {\n const isDisabled = disabled || loading;\n\n const classes = [\n \"ns-btn\",\n `ns-btn--${variant}`,\n sizeToClass[size],\n loading ? \"ns-btn--loading\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <button\n className={classes}\n disabled={isDisabled}\n aria-disabled={isDisabled || undefined}\n aria-busy={loading || undefined}\n data-test-id={dataTestId}\n {...rest}\n >\n {loading && <span className=\"ns-btn__spinner\" aria-hidden=\"true\" />}\n {prefix && !loading && <span className=\"ns-btn__prefix\">{prefix}</span>}\n <span className=\"ns-btn__label\">{children}</span>\n </button>\n );\n};\n\nexport default Button;\n","import React, { forwardRef } from \"react\";\nimport \"./Input.css\";\n\nexport type InputType = \"text\" | \"number\";\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n type?: InputType;\n size?: InputSize;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n disabled?: boolean;\n error?: boolean;\n dataTestId?: string;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = \"text\",\n size = \"md\",\n prefix,\n suffix,\n disabled = false,\n error = false,\n className = \"\",\n dataTestId,\n ...rest\n },\n ref\n ) => {\n const sizeClass = `ns-input--${size}`;\n const errorClass = error ? \"ns-input--error\" : \"\";\n const disabledClass = disabled ? \"ns-input--disabled\" : \"\";\n\n const classes = [\n \"ns-input\",\n sizeClass,\n errorClass,\n disabledClass,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={`ns-input__wrapper ${sizeClass}`}>\n {prefix && <div className=\"ns-input__prefix\">{prefix}</div>}\n <input\n ref={ref}\n type={type}\n className={classes}\n disabled={disabled}\n aria-invalid={error || undefined}\n data-test-id={dataTestId}\n {...rest}\n />\n {suffix && <div className=\"ns-input__suffix\">{suffix}</div>}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import React from \"react\";\nimport \"./Text.css\";\n\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type TextWeight = \"light\" | \"regular\" | \"medium\" | \"bold\";\nexport type TextColor = \"primary\" | \"white\" | \"grey\" | \"danger\";\n\nexport interface TextProps extends React.HTMLAttributes<HTMLSpanElement> {\n children: React.ReactNode;\n size?: TextSize;\n weight?: TextWeight;\n color?: TextColor;\n dataTestId?: string;\n}\n\nexport const Text: React.FC<TextProps> = ({\n children,\n size = \"md\",\n weight = \"regular\",\n color = \"primary\",\n className = \"\",\n style,\n dataTestId,\n ...rest\n}) => {\n const sizeClass = `ns-text--${size}`;\n const weightClass = `ns-text--${weight}`;\n const colorClass = `ns-text--${color}`;\n\n const classes = [\"ns-text\", sizeClass, weightClass, colorClass, className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={classes} style={style} data-test-id={dataTestId} {...rest}>\n {children}\n </div>\n );\n};\n\nexport default Text;\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\",\n key: \"k3hazp\"\n }\n ]\n];\nconst Book = createLucideIcon(\"book\", __iconNode);\n\nexport { __iconNode, Book as default };\n//# sourceMappingURL=book.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\",\n key: \"hh9hay\"\n }\n ],\n [\"path\", { d: \"m3.3 7 8.7 5 8.7-5\", key: \"g66t2b\" }],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }]\n];\nconst Box = createLucideIcon(\"box\", __iconNode);\n\nexport { __iconNode, Box as default };\n//# sourceMappingURL=box.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 2a10 10 0 0 1 7.38 16.75\", key: \"175t95\" }],\n [\"path\", { d: \"M12 8v8\", key: \"napkw2\" }],\n [\"path\", { d: \"M16 12H8\", key: \"1fr5h0\" }],\n [\"path\", { d: \"M2.5 8.875a10 10 0 0 0-.5 3\", key: \"1vce0s\" }],\n [\"path\", { d: \"M2.83 16a10 10 0 0 0 2.43 3.4\", key: \"o3fkw4\" }],\n [\"path\", { d: \"M4.636 5.235a10 10 0 0 1 .891-.857\", key: \"1szpfk\" }],\n [\"path\", { d: \"M8.644 21.42a10 10 0 0 0 7.631-.38\", key: \"9yhvd4\" }]\n];\nconst CircleFadingPlus = createLucideIcon(\"circle-fading-plus\", __iconNode);\n\nexport { __iconNode, CircleFadingPlus as default };\n//# sourceMappingURL=circle-fading-plus.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"3\", key: \"ilqhr7\" }],\n [\"path\", { d: \"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662\", key: \"154egf\" }]\n];\nconst CircleUser = createLucideIcon(\"circle-user\", __iconNode);\n\nexport { __iconNode, CircleUser as default };\n//# sourceMappingURL=circle-user.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n];\nconst CircleX = createLucideIcon(\"circle-x\", __iconNode);\n\nexport { __iconNode, CircleX as default };\n//# sourceMappingURL=circle-x.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\", key: \"13o1zl\" }],\n [\"path\", { d: \"M2 12h20\", key: \"9i4pu4\" }]\n];\nconst Globe = createLucideIcon(\"globe\", __iconNode);\n\nexport { __iconNode, Globe as default };\n//# sourceMappingURL=globe.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n];\nconst Image = createLucideIcon(\"image\", __iconNode);\n\nexport { __iconNode, Image as default };\n//# sourceMappingURL=image.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\", key: \"132q7q\" }],\n [\"rect\", { x: \"2\", y: \"4\", width: \"20\", height: \"16\", rx: \"2\", key: \"izxlao\" }]\n];\nconst Mail = createLucideIcon(\"mail\", __iconNode);\n\nexport { __iconNode, Mail as default };\n//# sourceMappingURL=mail.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\",\n key: \"1r0f0z\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"3\", key: \"ilqhr7\" }]\n];\nconst MapPin = createLucideIcon(\"map-pin\", __iconNode);\n\nexport { __iconNode, MapPin as default };\n//# sourceMappingURL=map-pin.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 17v5\", key: \"bb1du9\" }],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n key: \"1nkz8b\"\n }\n ]\n];\nconst Pin = createLucideIcon(\"pin\", __iconNode);\n\nexport { __iconNode, Pin as default };\n//# sourceMappingURL=pin.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"circle\", { cx: \"12\", cy: \"10\", r: \"3\", key: \"ilqhr7\" }],\n [\"path\", { d: \"M7 21v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2\", key: \"1m6ac2\" }]\n];\nconst SquareUser = createLucideIcon(\"square-user\", __iconNode);\n\nexport { __iconNode, SquareUser as default };\n//# sourceMappingURL=square-user.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n];\nconst User = createLucideIcon(\"user\", __iconNode);\n\nexport { __iconNode, User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.542.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.js.map\n","import React from \"react\";\n\ninterface DiscordIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const DiscordIcon: React.FC<DiscordIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={props.color}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M20.727 5.455s-2.5-1.958-5.454-2.182l-.266.532c2.67.654 3.895 1.59 5.175 2.74C17.976 5.42 15.797 4.364 12 4.364S6.025 5.419 3.818 6.545c1.28-1.15 2.737-2.19 5.175-2.74l-.266-.532c-3.098.293-5.454 2.182-5.454 2.182S.479 9.505 0 17.455c2.816 3.247 7.09 3.272 7.09 3.272l.895-1.192a10.9 10.9 0 0 1-4.712-3.171C5.039 17.7 7.705 19.09 12 19.09c4.296 0 6.961-1.391 8.727-2.727a10.9 10.9 0 0 1-4.712 3.171l.894 1.192s4.275-.025 7.091-3.273c-.48-7.95-3.273-12-3.273-12M8.455 15.273c-1.055 0-1.91-.977-1.91-2.182s.855-2.182 1.91-2.182 1.909.977 1.909 2.182-.855 2.182-1.91 2.182m7.09 0c-1.054 0-1.909-.977-1.909-2.182s.855-2.182 1.91-2.182 1.909.977 1.909 2.182-.855 2.182-1.91 2.182\"></path>\n </svg>\n);\n","import React from \"react\";\n\ninterface GithubIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const GithubIcon: React.FC<GithubIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill={props.color}\n >\n <path d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"></path>\n </svg>\n);\n","import React from \"react\";\n\ninterface TelegramIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const TelegramIcon: React.FC<TelegramIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill={props.color}\n width={size}\n height={size}\n {...props}\n viewBox=\"0 0 24 24\"\n >\n <g clipPath=\"url(#SocialTelegram_svg__a)\">\n <path\n fill-rule=\"evenodd\"\n d=\"M24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12M12.43 8.859q-1.75.728-6.998 3.014-.852.339-.893.663c-.046.366.412.51 1.034.705q.128.04.263.084c.613.199 1.437.432 1.865.441q.584.012 1.302-.48 4.902-3.31 5.061-3.346c.075-.017.179-.039.249.024.07.062.063.18.056.212-.046.193-1.84 1.862-2.77 2.726-.29.269-.495.46-.537.504q-.143.145-.282.279c-.57.548-.996.96.024 1.632.49.323.882.59 1.273.856.427.291.853.581 1.405.943q.21.14.405.28c.497.355.944.673 1.496.623.32-.03.652-.331.82-1.23.397-2.126 1.179-6.73 1.36-8.628a2 2 0 0 0-.02-.472.5.5 0 0 0-.172-.325c-.143-.117-.365-.142-.465-.14-.451.008-1.143.249-4.476 1.635\"\n clip-rule=\"evenodd\"\n ></path>\n </g>\n <defs>\n <clipPath id=\"SocialTelegram_svg__a\">\n <path fill={props.color} d=\"M0 0h24v24H0z\"></path>\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\n\ninterface YoutubeIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const YoutubeIcon: React.FC<YoutubeIconProps> = ({\n size = 24,\n ...props\n}) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.54 6.42C22.42 5.945 22.183 5.51 21.828 5.156C21.474 4.802 21.038 4.565 20.56 4.44C18.88 4 12 4 12 4S5.12 4 3.46 4.46C2.982 4.585 2.546 4.822 2.192 5.176C1.838 5.53 1.6 5.965 1.48 6.44C1 8.12 1 12 1 12S1 15.88 1.46 17.54C1.6 18.015 1.838 18.45 2.192 18.804C2.546 19.158 2.982 19.395 3.46 19.52C5.12 20 12 20 12 20S18.88 20 20.54 19.54C21.018 19.415 21.454 19.178 21.808 18.824C22.162 18.47 22.4 18.035 22.52 17.56C23 15.88 23 12 23 12S23 8.12 22.54 6.42Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.75 15.02L15.5 12L9.75 8.98V15.02Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\n\ninterface XIconProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const XIcon: React.FC<XIconProps> = ({ size = 24, ...props }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={props.color}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fill=\"inherit\"\n d=\"m.058 1 9.267 12.39L0 23.463h2.099l8.163-8.82 6.596 8.82H24l-9.788-13.086L22.892 1h-2.1l-7.517 8.122L7.2 1zm3.087 1.546h3.28l14.488 19.37h-3.28z\"\n ></path>\n </svg>\n);\n","import React, { ReactElement } from \"react\";\nimport * as LucideIcons from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport \"./Icon.css\";\nimport {\n User,\n Search,\n SquareUser,\n Globe,\n Pin,\n Box,\n Book,\n X,\n CheckCircle,\n AlertTriangle,\n Info,\n XCircle,\n} from \"lucide-react\";\nimport {\n DiscordIcon,\n GithubIcon,\n TelegramIcon,\n YoutubeIcon,\n XIcon,\n} from \"./custom\";\n\ntype CustomIcon = React.ComponentType<{\n size?: number;\n color?: string;\n className?: string;\n \"data-test-id\"?: string;\n}>;\ntype IconComponent = LucideIcon | CustomIcon;\n\nexport type IconName =\n | \"person\"\n | \"x\"\n | \"search\"\n | \"square-user\"\n | \"globe\"\n | \"pin\"\n | \"box\"\n | \"book\"\n | \"map-pin\"\n | \"mail\"\n | \"discord\"\n | \"github\"\n | \"telegram\"\n | \"youtube\"\n | \"image\"\n | \"circle-person\"\n | \"twitter\"\n | \"circle-alert\"\n | \"check-circle\"\n | \"alert-triangle\"\n | \"info\"\n | \"x-circle\"\n | \"rotate-circle\"\n\nconst icons: Record<IconName, IconComponent> = {\n person: User,\n x: X,\n search: Search,\n \"square-user\": SquareUser,\n globe: Globe,\n pin: Pin,\n box: Box,\n book: Book,\n \"map-pin\": LucideIcons.MapPin,\n mail: LucideIcons.Mail,\n discord: DiscordIcon,\n github: GithubIcon,\n telegram: TelegramIcon,\n youtube: YoutubeIcon,\n image: LucideIcons.Image,\n \"circle-person\": LucideIcons.CircleUser,\n twitter: XIcon,\n \"circle-alert\": LucideIcons.CircleAlert,\n \"check-circle\": CheckCircle,\n \"alert-triangle\": AlertTriangle,\n info: Info,\n \"x-circle\": XCircle,\n \"rotate-circle\": LucideIcons.CircleFadingPlus\n};\n\nexport interface IconProps {\n name: IconName;\n color?: string;\n size?: number;\n className?: string;\n dataTestId?: string;\n}\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n color = \"currentColor\",\n size = 24,\n className = \"\",\n dataTestId,\n}) => {\n const IconComponent = icons[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found in Icons`);\n return null;\n }\n\n return (\n <IconComponent\n size={size}\n color={color}\n className={`ns-icon ${className}`}\n data-test-id={dataTestId}\n />\n );\n};\n\nexport default Icon;\n","import React from \"react\";\n\ninterface EthSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const EthSvg: React.FC<EthSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <defs>\n <clipPath id=\"clip0_597_2890\">\n <rect\n width=\"19\"\n height=\"19\"\n fill=\"white\"\n transform=\"translate(0.255859 0.5)\"\n />\n </clipPath>\n </defs>\n <g clipPath=\"url(#clip0_597_2890)\">\n <path\n d=\"M9.75586 19.5C15.0026 19.5 19.2559 15.2467 19.2559 10C19.2559 4.75329 15.0026 0.5 9.75586 0.5C4.50915 0.5 0.255859 4.75329 0.255859 10C0.255859 15.2467 4.50915 19.5 9.75586 19.5Z\"\n fill=\"#7A57DD\"\n />\n <path\n d=\"M9.75488 3.66663V8.34801L13.7116 10.1161L9.75488 3.66663Z\"\n fill=\"white\"\n fillOpacity=\"0.602\"\n />\n <path\n d=\"M9.75464 3.66663L5.79736 10.1161L9.75464 8.34801V3.66663Z\"\n fill=\"white\"\n />\n <path\n d=\"M9.75488 13.1498V16.3307L13.7143 10.8529L9.75488 13.1498Z\"\n fill=\"white\"\n fillOpacity=\"0.602\"\n />\n <path\n d=\"M9.75464 16.3307V13.1493L5.79736 10.8529L9.75464 16.3307Z\"\n fill=\"white\"\n />\n <path\n d=\"M9.75488 12.4135L13.7116 10.1161L9.75488 8.34912V12.4135Z\"\n fill=\"white\"\n fillOpacity=\"0.2\"\n />\n <path\n d=\"M5.79736 10.1161L9.75464 12.4135V8.34912L5.79736 10.1161Z\"\n fill=\"white\"\n fillOpacity=\"0.602\"\n />\n </g>\n </svg>\n );\n};","import React from \"react\";\n\ninterface ArbSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const ArbSvg: React.FC<ArbSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 40 44\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fill=\"#2d374b\"\n d=\"m24.554 20.16 3.23-5.482 8.71 13.565.005 2.604-.029-17.915a1.35 1.35 0 0 0-.624-1.075l-15.68-9.02a1.38 1.38 0 0 0-1.339.087l-.055.034-15.22 8.82-.06.028a1.34 1.34 0 0 0-.787 1.146L2.73 27.55l8.113-12.574c1.02-1.667 3.246-2.205 5.313-2.175l2.424.064-14.286 22.91 1.684.97 14.457-23.857 6.39-.023-14.42 24.459 6.01 3.457.718.412c.303.124.661.13.968.02L36 31.996l-3.04 1.762zm1.232 17.757-6.069-9.526 3.705-6.287 7.971 12.564-5.607 3.25Z\"\n />\n <path\n fill=\"#28a0f0\"\n d=\"m19.715 28.392 6.07 9.525 5.606-3.249-7.97-12.564zm16.783 2.455-.004-2.604-8.71-13.565-3.231 5.483 8.408 13.598L36 31.997c.298-.242.479-.597.498-.98z\"\n />\n <path\n fill=\"#fff\"\n d=\"m0 33.302 4.293 2.474L18.58 12.865l-2.424-.064c-2.066-.03-4.291.508-5.313 2.175L2.73 27.55 0 31.743zm26.825-20.437-6.39.023L5.976 36.745l5.053 2.91 1.375-2.331 14.42-24.46Z\"\n />\n <path\n fill=\"#96bedc\"\n d=\"M39.191 12.832a4.07 4.07 0 0 0-1.91-3.272L21.394.424a4.13 4.13 0 0 0-3.645 0C17.617.49 2.3 9.373 2.3 9.373a4.04 4.04 0 0 0-2.3 3.45v18.92l2.73-4.194-.024-14.599a1.35 1.35 0 0 1 .562-1.015c.071-.05 15.649-9.068 15.699-9.093a1.38 1.38 0 0 1 1.198-.006l15.68 9.02c.371.236.604.637.624 1.075v18.084c-.018.383-.17.739-.468.98l-3.04 1.763-1.569.909-5.607 3.249-5.685 3.295a1.38 1.38 0 0 1-.968-.02l-6.727-3.868-1.375 2.33 6.046 3.481.524.297c.226.127.38.211.435.238.43.209 1.048.33 1.605.33.51 0 1.009-.094 1.48-.278l16.515-9.564a4.04 4.04 0 0 0 1.556-3.042z\"\n />\n </svg>\n );\n};\n","import React from \"react\";\n\ninterface BaseSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const BaseSvg: React.FC<BaseSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 111 111\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fill=\"#0052ff\"\n d=\"M54.921 110.034c30.438 0 55.113-24.632 55.113-55.017S85.359 0 54.921 0C26.043 0 2.353 22.171 0 50.392h72.847v9.25H0c2.353 28.22 26.043 50.392 54.921 50.392\"\n />\n </svg>\n );\n};\n","import React from \"react\";\n\ninterface BitcoinSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const BitcoinSvg: React.FC<BitcoinSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 500 500\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fill=\"#f39321\"\n d=\"M43.43 125.143c7.71-10.766 14.875-21.901 23.562-31.986 15.8-18.343 33.692-34.063 54.18-47.075 18.379-11.672 37.761-20.872 58.501-27.305 32.294-10.018 65.26-12.997 98.838-9.165 24.544 2.801 48.191 9.067 70.713 19.215 13.633 6.142 26.456 13.731 39.025 21.927 25.328 16.515 45.618 38.014 62.58 62.577 18.116 26.236 29.889 55.421 36.346 86.725 4.535 21.983 6.449 44.171 4.503 66.504-2.399 27.536-8.514 54.086-19.938 79.604-9.662 21.583-21.589 41.401-36.861 59.301-14.94 17.511-31.788 32.831-51.149 45.461-13.184 8.6-26.926 16.276-41.434 21.975-24.274 9.537-49.447 15.986-75.787 17.115-18.545.795-36.985.483-55.279-2.763-15.713-2.788-31.049-6.858-46.063-12.496-14.566-5.47-28.693-11.95-41.709-20.143-18.766-11.812-35.683-26.147-50.737-42.663-16.773-18.403-30.373-38.808-40.779-61.344-14.7-31.835-21.929-65.401-22.359-100.425-.162-13.173 1.349-26.244 3.105-39.283.126-.933-.002-1.899-.012-2.851 1.536-.952 1.4-2.618 1.677-4.071 3.906-20.483 10.494-40.059 19.418-58.906 3.162-6.674 7.525-12.764 9.659-19.928m281.727 129.37c6.537-3.474 12.749-5.465 17.658-9.85 18.918-16.899 23.96-56.673-6.747-75.833-9.566-5.969-19.77-10.393-30.77-14.907 1.819-14.731 7.709-28.516 9.622-43.603-9.076-2.249-17.578-5.234-26.425-6.193l-10.674 41.837c-6.78-2.076-13.761-1.879-20.142-5.473 2.302-14.39 7.773-27.872 9.268-42.314-9.322-1.464-17.216-5.094-26.265-5.485l-10.586 42.215c-17.944-2.75-34.419-8.921-52.52-12.239-3.977 8.91-5.738 18.311-7.334 28.313 5.896 1.392 11.022 2.623 16.158 3.811 12.965 2.998 16.517 10.086 13.439 21.424-2.19 8.065-4.166 16.189-6.182 24.301-7.245 29.16-14.432 58.333-21.72 87.482-1.642 6.567-5.734 8.706-12.398 7.731-6.563-.96-12.757-3.907-19.99-3.693-3.136 10.032-9.378 18.871-11.588 29.946l51.344 13.08c-1.312 15.208-7.614 29.125-9.476 44.441l25.544 6.123c5.653-14.044 6.957-28.803 12.226-43.33 6.351 3.265 13.397 2.317 19.612 6.427l-10.178 42.077c8.986 3.216 17.753 4.528 26.758 6.77l10.578-42.386c2.123-1.091 3.676-.888 5.143-.574a132.9 132.9 0 0 0 42.676 2.14c12.368-1.373 23.343-6.088 32.148-15.372 9.791-10.323 14.71-22.952 17.078-36.535 1.93-11.065 1.436-22.277-5.06-32.071-5.091-7.674-12.084-13.53-21.197-18.26M223.128 312.17c17.411 4.325 34.803 8.95 53.02 5.624 9.715-1.774 17.037-6.73 19.985-16.503 2.78-9.218 1.164-17.593-5.673-24.879-7.11-7.576-16.254-11.514-25.682-14.807-11.264-3.934-22.683-7.508-34.99-8.48l-13.972 56.788c2.981.929 5.117 1.712 7.312 2.257m61.5-80.324c9.628-1.368 17.612-7.738 19.958-16.393 2.869-10.583-.337-19.865-8.902-26.178-9.718-7.163-20.908-10.807-32.47-13.337-4.307-.943-8.544-3.454-13.756-1.759l-12.599 51.209c16.457 4.155 31.611 8.753 47.769 6.458\"\n />\n </svg>\n );\n};\n","import React from \"react\";\n\ninterface MaticSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const MaticSvg: React.FC<MaticSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n\n <g fill=\"none\">\n\n <circle fill=\"#6F41D8\" cx=\"16\" cy=\"16\" r=\"16\" />\n\n <path d=\"M21.092 12.693c-.369-.215-.848-.215-1.254 0l-2.879 1.654-1.955 1.078-2.879 1.653c-.369.216-.848.216-1.254 0l-2.288-1.294c-.369-.215-.627-.61-.627-1.042V12.19c0-.431.221-.826.627-1.042l2.25-1.258c.37-.216.85-.216 1.256 0l2.25 1.258c.37.216.628.611.628 1.042v1.654l1.955-1.115v-1.653a1.16 1.16 0 00-.627-1.042l-4.17-2.372c-.369-.216-.848-.216-1.254 0l-4.244 2.372A1.16 1.16 0 006 11.076v4.78c0 .432.221.827.627 1.043l4.244 2.372c.369.215.849.215 1.254 0l2.879-1.618 1.955-1.114 2.879-1.617c.369-.216.848-.216 1.254 0l2.251 1.258c.37.215.627.61.627 1.042v2.552c0 .431-.22.826-.627 1.042l-2.25 1.294c-.37.216-.85.216-1.255 0l-2.251-1.258c-.37-.216-.628-.611-.628-1.042v-1.654l-1.955 1.115v1.653c0 .431.221.827.627 1.042l4.244 2.372c.369.216.848.216 1.254 0l4.244-2.372c.369-.215.627-.61.627-1.042v-4.78a1.16 1.16 0 00-.627-1.042l-4.28-2.409z\" fill=\"#FFF\" />\n\n </g>\n </svg>\n );\n};\n","import React from \"react\";\n\ninterface OpSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const OpSvg: React.FC<OpSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 84 84\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fill=\"#ff0420\"\n d=\"M42 84c23.196 0 42-18.804 42-42S65.196 0 42 0 0 18.804 0 42s18.804 42 42 42\"\n />\n <path\n fill=\"#fff\"\n d=\"M30.461 53.76q-3.8 0-6.226-1.83-2.395-1.861-2.395-5.291 0-.72.16-1.764.414-2.352 1.181-5.651 2.171-8.984 11.208-8.984 2.46 0 4.407.85 1.947.817 3.065 2.482 1.118 1.635 1.118 3.92 0 .687-.16 1.732a76 76 0 0 1-1.15 5.65q-1.116 4.476-3.863 6.697-2.747 2.19-7.345 2.19Zm.448-4.704q1.788 0 3.033-1.078 1.277-1.077 1.82-3.3.735-3.07 1.118-5.356.127-.687.127-1.405 0-2.973-3.033-2.973-1.788 0-3.065 1.078-1.245 1.078-1.789 3.3-.574 2.188-1.15 5.357a7 7 0 0 0-.127 1.372q0 3.005 3.066 3.005m13.536 4.377q-.351 0-.543-.229a.8.8 0 0 1-.096-.588l4.407-21.233a.94.94 0 0 1 .351-.588.96.96 0 0 1 .607-.229h8.494q3.544 0 5.684 1.503 2.17 1.503 2.171 4.345a8 8 0 0 1-.192 1.698q-.798 3.757-3.225 5.554-2.395 1.797-6.578 1.797h-4.31l-1.47 7.153a.94.94 0 0 1-.35.588.96.96 0 0 1-.607.23zm11.304-12.478q1.34 0 2.33-.752 1.023-.751 1.342-2.156.096-.555.096-.98 0-.947-.543-1.437-.544-.523-1.852-.523H53.29l-1.213 5.848z\"\n />\n </svg>\n );\n};\n","import React from \"react\";\n\ninterface SolSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const SolSvg: React.FC<SolSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 500 500\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M250 0c138 0 250 111.9 250 250S388 500 250 500 0 388 0 250 111.9 0 250 0\" />\n <linearGradient\n id=\"SolIcon_svg__a\"\n x1=\"242.52\"\n x2=\"755.68\"\n y1=\"267.33\"\n y2=\"-245.83\"\n gradientTransform=\"matrix(.5 0 0 .5 0 250)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" style={{ stopColor: \"rgb(203, 78, 232)\" }} />\n <stop offset=\"1\" style={{ stopColor: \"rgb(16, 244, 177)\" }} />\n </linearGradient>\n <path\n d=\"M115.6 226.1H347c2.9 0 5.6 1.1 7.6 3.2l36.6 36.8c6.8 6.8 2 18.4-7.6 18.4H152.2c-2.9 0-5.6-1.1-7.6-3.2L108 244.5c-6.8-6.7-2-18.4 7.6-18.4m-7.7-48.8 36.6-36.8c2.1-2.1 4.8-3.2 7.6-3.2h231.3c9.6 0 14.5 11.6 7.6 18.4l-36.5 36.8c-2 2.1-4.8 3.2-7.6 3.2H115.6c-9.6 0-14.4-11.6-7.7-18.4m283.2 156.2-36.6 36.9c-2 2-4.8 3.2-7.6 3.2H115.6c-9.6 0-14.4-11.6-7.7-18.4l36.6-36.9c2.1-2 4.8-3.2 7.6-3.2h231.3c9.7-.1 14.6 11.5 7.7 18.4\"\n style={{\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"url(#SolIcon_svg__a)\",\n }}\n />\n </svg>\n );\n};\n","import React from \"react\";\n\ninterface ZoraSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const ZoraSvg: React.FC<ZoraSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 142 142\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <defs>\n <radialGradient\n id=\"ZoraIcon_svg__a\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientTransform=\"translate(102.676 37.972)scale(-119.284)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.007\" stopColor=\"#f2cefe\" />\n <stop offset=\"0.191\" stopColor=\"#afbaf1\" />\n <stop offset=\"0.498\" stopColor=\"#4281d3\" />\n <stop offset=\"0.667\" stopColor=\"#2e427d\" />\n <stop offset=\"0.823\" stopColor=\"#230101\" />\n <stop offset=\"1\" stopColor=\"#8f6b40\" />\n </radialGradient>\n </defs>\n <path\n fill=\"url(#ZoraIcon_svg__a)\"\n d=\"M70.615 141.23C31.615 141.23 0 109.615 0 70.615S31.616 0 70.615 0c39 0 70.615 31.615 70.615 70.615s-31.615 70.615-70.614 70.615Z\"\n />\n </svg>\n );\n};\n","import React from \"react\";\n\ninterface CeloSvgProps extends React.SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const CeloSvg: React.FC<CeloSvgProps> = ({ size = 20, ...props }) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 2500 2500\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle\n cx=\"1250\"\n cy=\"1250\"\n r=\"1250\"\n fill=\"#FCFF52\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n <path\n d=\"M1949.3,546.2H550.7v1407.7h1398.7v-491.4h-232.1c-80,179.3-260.1,304.1-466.2,304.1 c-284.1,0-514.2-233.6-514.2-517.5c0-284,230.1-515.6,514.2-515.6c210.1,0,390.2,128.9,470.2,312.1h228.1V546.2z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n};\n","import React from \"react\";\nimport \"./ChainIcon.css\";\nimport type { ChainName } from \"@/types\";\nimport { EthSvg } from \"./icons/EthSvg\";\nimport { ArbSvg } from \"./icons/ArbSvg\";\nimport { BaseSvg } from \"./icons/BaseSvg\";\nimport { BitcoinSvg } from \"./icons/BitcoinSvg\";\nimport { MaticSvg } from \"./icons/MaticSvg\";\nimport { OpSvg } from \"./icons/OpSvg\";\nimport { SolSvg } from \"./icons/SolSvg\";\nimport { ZoraSvg } from \"./icons/ZoraSvg\";\nimport { CeloSvg } from \"./icons/CeloSvg\";\n\ninterface ChainIconProps extends React.SVGProps<SVGSVGElement> {\n chain: ChainName;\n size?: number;\n}\n\nexport const ChainIcon: React.FC<ChainIconProps> = ({\n chain,\n size = 20,\n className,\n ...props\n}) => {\n const renderIcon = () => {\n switch (chain) {\n case \"eth\":\n return <EthSvg size={size} {...props} />;\n case \"arb\":\n return <ArbSvg size={size} {...props} />;\n case \"base\":\n return <BaseSvg size={size} {...props} />;\n case \"bitcoin\":\n return <BitcoinSvg size={size} {...props} />;\n case \"matic\":\n return <MaticSvg size={size} {...props} />;\n case \"op\":\n return <OpSvg size={size} {...props} />;\n case \"sol\":\n return <SolSvg size={size} {...props} />;\n case \"zora\":\n return <ZoraSvg size={size} {...props} />;\n case \"celo\":\n return <CeloSvg size={size} {...props} />;\n default:\n return null;\n }\n };\n\n return (\n <div className={`ns-chain-icon ${className || \"\"}`}>\n {renderIcon()}\n </div>\n );\n};\n","import React, { useState, useRef, useEffect, ReactNode } from 'react';\nimport './Tooltip.css';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';\n\nexport interface TooltipProps {\n children: ReactNode;\n content: ReactNode;\n position?: TooltipPosition;\n delay?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n trigger?: 'hover' | 'click' | 'focus';\n maxWidth?: number;\n offset?: number;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n content,\n position = 'top',\n delay = 200,\n disabled = false,\n className = '',\n contentClassName = '',\n trigger = 'hover',\n maxWidth = 200,\n offset = 8,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | undefined>(undefined);\n\n const showTooltip = () => {\n if (disabled) return;\n \n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n \n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const hideTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n const calculatePosition = () => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n const baseOffset = offset;\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n\n // Calculate initial position based on the specified position\n switch (position) {\n case 'top':\n top = triggerRect.top - tooltipRect.height - baseOffset;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case 'bottom':\n top = triggerRect.bottom + baseOffset;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case 'left':\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - baseOffset;\n break;\n case 'right':\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.right + baseOffset;\n break;\n case 'top-start':\n top = triggerRect.top - tooltipRect.height - baseOffset;\n left = triggerRect.left;\n break;\n case 'top-end':\n top = triggerRect.top - tooltipRect.height - baseOffset;\n left = triggerRect.right - tooltipRect.width;\n break;\n case 'bottom-start':\n top = triggerRect.bottom + baseOffset;\n left = triggerRect.left;\n break;\n case 'bottom-end':\n top = triggerRect.bottom + baseOffset;\n left = triggerRect.right - tooltipRect.width;\n break;\n }\n\n // Smart viewport boundary detection and adjustment\n const margin = 8;\n \n // Horizontal adjustments\n if (left < margin) {\n left = margin;\n } else if (left + tooltipRect.width > viewport.width - margin) {\n left = viewport.width - tooltipRect.width - margin;\n }\n\n // Vertical adjustments\n if (top < margin) {\n // If tooltip would go above viewport, try to position it below\n if (position.includes('top')) {\n top = triggerRect.bottom + baseOffset;\n } else {\n top = margin;\n }\n } else if (top + tooltipRect.height > viewport.height - margin) {\n // If tooltip would go below viewport, try to position it above\n if (position.includes('bottom')) {\n top = triggerRect.top - tooltipRect.height - baseOffset;\n } else {\n top = viewport.height - tooltipRect.height - margin;\n }\n }\n\n // Final safety check - if still out of bounds, center it\n if (left < margin) left = margin;\n if (left + tooltipRect.width > viewport.width - margin) {\n left = Math.max(margin, viewport.width - tooltipRect.width - margin);\n }\n if (top < margin) top = margin;\n if (top + tooltipRect.height > viewport.height - margin) {\n top = Math.max(margin, viewport.height - tooltipRect.height - margin);\n }\n\n setTooltipPosition({ top, left });\n };\n\n useEffect(() => {\n if (isVisible) {\n // Small delay to ensure tooltip is rendered before positioning\n const timeoutId = setTimeout(() => {\n calculatePosition();\n }, 0);\n \n return () => clearTimeout(timeoutId);\n }\n }, [isVisible, position, offset]);\n\n useEffect(() => {\n const handleScroll = () => {\n if (isVisible) {\n calculatePosition();\n }\n };\n\n const handleResize = () => {\n if (isVisible) {\n calculatePosition();\n }\n };\n\n if (isVisible) {\n window.addEventListener('scroll', handleScroll, true);\n window.addEventListener('resize', handleResize);\n }\n\n return () => {\n window.removeEventListener('scroll', handleScroll, true);\n window.removeEventListener('resize', handleResize);\n };\n }, [isVisible]);\n\n const handleMouseEnter = () => {\n if (trigger === 'hover') showTooltip();\n };\n\n const handleMouseLeave = () => {\n if (trigger === 'hover') hideTooltip();\n };\n\n const handleClick = () => {\n if (trigger === 'click') {\n if (isVisible) {\n hideTooltip();\n } else {\n showTooltip();\n }\n }\n };\n\n const handleFocus = () => {\n if (trigger === 'focus') showTooltip();\n };\n\n const handleBlur = () => {\n if (trigger === 'focus') hideTooltip();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape' && isVisible) {\n hideTooltip();\n }\n };\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={triggerRef}\n className={`ns-tooltip-trigger ${className}`}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n tabIndex={trigger === 'focus' ? 0 : undefined}\n >\n {children}\n {isVisible && content && (\n <div\n ref={tooltipRef}\n className={`ns-tooltip ns-tooltip--${position} ${contentClassName}`}\n style={{\n top: tooltipPosition.top,\n left: tooltipPosition.left,\n maxWidth: maxWidth,\n }}\n role=\"tooltip\"\n aria-live=\"polite\"\n >\n <div className=\"ns-tooltip__content\">\n {content}\n </div>\n <div className={`ns-tooltip__arrow ns-tooltip__arrow--${position}`} />\n </div>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n","import { Text, Icon } from \"../atoms\";\nimport \"./PendingTransaction.css\";\n\nexport enum TransactionState {\n InProgress = \"In Progress\",\n Completed = \"Completed\",\n Failed = \"Failed\",\n}\n\ninterface PendingTransactionProps {\n state: TransactionState;\n blockExplorerUrl: string;\n transactionHash?: string;\n className?: string;\n}\n\nexport const PendingTransaction = ({\n state,\n blockExplorerUrl,\n transactionHash,\n className = \"\",\n}: PendingTransactionProps) => {\n const getStatusIcon = () => {\n switch (state) {\n case TransactionState.InProgress:\n return <div className=\"ns-pending-tx__spinner\" />;\n case TransactionState.Completed:\n return <Icon name=\"check-circle\" size={24} />;\n case TransactionState.Failed:\n return <Icon name=\"x-circle\" size={24} />;\n default:\n return null;\n }\n };\n\n const getStatusMessage = () => {\n switch (state) {\n case TransactionState.InProgress:\n return \"Transaction is being executed...\";\n case TransactionState.Completed:\n return \"Transaction completed successfully!\";\n case TransactionState.Failed:\n return \"Transaction failed!\";\n default:\n return \"\";\n }\n };\n\n const getStatusClass = () => {\n switch (state) {\n case TransactionState.InProgress:\n return \"ns-pending-tx--in-progress\";\n case TransactionState.Completed:\n return \"ns-pending-tx--completed\";\n case TransactionState.Failed:\n return \"ns-pending-tx--failed\";\n default:\n return \"\";\n }\n };\n\n const getIconClass = () => {\n switch (state) {\n case TransactionState.InProgress:\n return \"ns-pending-tx__icon--in-progress\";\n case TransactionState.Completed:\n return \"ns-pending-tx__icon--completed\";\n case TransactionState.Failed:\n return \"ns-pending-tx__icon--failed\";\n default:\n return \"\";\n }\n };\n\n return (\n <div className={`ns-pending-tx ${getStatusClass()} ${className}`}>\n <div className=\"ns-pending-tx__content\">\n <div className={`ns-pending-tx__icon ${getIconClass()}`}>\n {getStatusIcon()}\n </div>\n \n <div className=\"ns-pending-tx__status\">\n <Text>{getStatusMessage()}</Text>\n </div>\n \n {transactionHash && (\n <p className=\"ns-pending-tx__message\">\n Hash: {transactionHash.slice(0, 10)}...{transactionHash.slice(-8)}\n </p>\n )}\n \n <a \n href={blockExplorerUrl} \n target=\"_blank\" \n rel=\"noopener noreferrer\"\n className=\"ns-pending-tx__link\"\n >\n <Icon name=\"globe\" size={16} className=\"ns-pending-tx__link-icon\" />\n View on Block Explorer\n </a>\n </div>\n </div>\n );\n};\n","import React, { useRef, useEffect, useState, useCallback } from \"react\";\nimport \"./Dropdown.css\";\n\nexport interface DropdownProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n disabled?: boolean;\n dataTestId?: string;\n closeCallback?: () => void;\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n trigger,\n children,\n placement = \"bottom\",\n align = \"start\",\n disabled = false,\n dataTestId,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const triggerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const handleToggle = useCallback(() => {\n if (!disabled) {\n setIsOpen(prev => !prev);\n }\n }, [disabled]);\n\n const handleClickOutside = useCallback((event: MouseEvent) => {\n if (\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node) &&\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", e => {\n if (e.key === \"Escape\") setIsOpen(false);\n });\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen, handleClickOutside]);\n\n const getPlacementClasses = () => {\n const placementClass = `ns-dropdown--${placement}`;\n const alignClass = `ns-dropdown--align-${align}`;\n return `${placementClass} ${alignClass}`;\n };\n\n return (\n <div className=\"ns-dropdown\" data-test-id={dataTestId}>\n <div\n ref={triggerRef}\n className=\"ns-dropdown__trigger\"\n onClick={handleToggle}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n onKeyDown={e => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleToggle();\n }\n }}\n >\n {trigger}\n </div>\n {isOpen && (\n <div\n ref={dropdownRef}\n className={`ns-dropdown__menu ${getPlacementClasses()}`}\n role=\"menu\"\n aria-orientation=\"vertical\"\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","export interface EnsRecords {\n addresses: EnsAddressRecord[];\n texts: EnsTextRecord[];\n contenthash?: EnsContenthashRecord;\n}\n\nexport interface EnsTextRecord {\n key: string;\n value: string;\n}\n\nexport interface EnsAddressRecord {\n coinType: number;\n value: string;\n}\n\nexport interface EnsContenthashRecord {\n protocol: ContenthashProtocol;\n value: string;\n}\n\nexport enum ContenthashProtocol {\n Ipfs = \"ipfs\",\n Onion = \"onion3\",\n Arweave = \"arweave\",\n Skynet = \"skynet\",\n Swarm = \"swarm\",\n}\n","interface IpfsIconProps {\n size?: number;\n}\n\nexport const IpfsIcon = ({ size = 20 }: IpfsIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 20 22\"\n fill=\"none\"\n >\n <path\n fill=\"#469EA2\"\n d=\"m0 16.44 9.56 5.48 9.559-5.48V5.48L9.559 0 0 5.48z\"\n ></path>\n <path\n fill=\"#6ACAD1\"\n d=\"M8.58 1.31 1.64 5.289a2 2 0 0 1 0 .373l6.93 3.977a1.66 1.66 0 0 1 1.97 0l6.93-3.977a2 2 0 0 1 0-.373l-6.92-3.977a1.66 1.66 0 0 1-1.968 0m9.56 5.447-6.942 4.023c.038.348-.036.7-.212 1.005a1.67 1.67 0 0 1-.766.69l.011 7.91q.17.073.319.18l6.93-3.978c-.037-.348.037-.7.213-1.005s.444-.545.766-.69V6.939a2.3 2.3 0 0 1-.319-.181M.98 6.802q-.15.107-.319.181v7.955c.326.139.598.38.775.685.176.306.248.66.204 1.01l6.93 3.977q.15-.107.32-.18v-7.955a1.63 1.63 0 0 1-.775-.686 1.6 1.6 0 0 1-.205-1.01z\"\n ></path>\n <path\n fill=\"#469EA2\"\n d=\"m9.56 1.186 8.546 4.904v9.797L9.56 20.791l-8.547-4.904V6.079zm0-1.163L0 5.503v10.96l9.56 5.48 9.559-5.48V5.503z\"\n ></path>\n <path\n fill=\"#469EA2\"\n d=\"M9.628 12.825H9.49a1.8 1.8 0 0 1-1.264-.518 1.77 1.77 0 0 1-.522-1.256v-.136a1.76 1.76 0 0 1 .521-1.255 1.78 1.78 0 0 1 1.265-.519h.137a1.8 1.8 0 0 1 1.265.519 1.77 1.77 0 0 1 .521 1.255v.136a1.76 1.76 0 0 1-.521 1.256 1.78 1.78 0 0 1-1.265.518m0 7.288H9.49a1.79 1.79 0 0 0-1.559.904l1.628.927 1.627-.927a1.79 1.79 0 0 0-1.56-.904m9.502-5.48h-.068a1.8 1.8 0 0 0-1.265.518 1.77 1.77 0 0 0-.522 1.256v.135a1.7 1.7 0 0 0 .228.86l1.627-.939zM17.503 4.576a1.73 1.73 0 0 0-.228.859v.136a1.76 1.76 0 0 0 .522 1.255 1.78 1.78 0 0 0 1.265.519h.068V5.503zM9.56.023 7.932.949a1.78 1.78 0 0 0 1.56.915h.136A1.79 1.79 0 0 0 11.187.96zM1.627 4.565 0 5.503v1.842h.068a1.8 1.8 0 0 0 1.265-.519 1.77 1.77 0 0 0 .522-1.255v-.136a1.9 1.9 0 0 0-.228-.87M.068 14.633H0v1.83l1.627.938a1.73 1.73 0 0 0 .228-.859v-.135a1.76 1.76 0 0 0-.522-1.256 1.78 1.78 0 0 0-1.265-.518\"\n ></path>\n <path\n fill=\"#083B54\"\n fillOpacity=\"0.15\"\n d=\"M9.56 22V11.028L0 5.548V16.52z\"\n ></path>\n <path\n fill=\"#083B54\"\n fillOpacity=\"0.05\"\n d=\"M19.13 16.418V5.458l-9.56 5.48V21.91z\"\n ></path>\n </svg>\n );\n};\n","interface OnionIconProps {\n size?: number;\n}\n\nexport const OnionIcon = ({ size = 20 }: OnionIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size * 1.18}\n data-name=\"Layer 1\"\n viewBox=\"0 0 161 190\"\n >\n <path\n fill=\"#7D50CF\"\n d=\"M141.67 74.68c-16.3-17.8-41.29-40.85-44-52.41S102.17 0 102.17 0C90.76-.21 84.29 5.54 80.56 12.07 76.9 5.54 70.36-.21 59 0c0 0 7.25 10.62 4.52 22.26s-27.77 34.62-44 52.43c-45.45 49.76-6 115.82 61 115.82s106.53-66.06 61.15-115.83M80.56 175.29c-27 0-57.73-14.51-64.55-43.81-7.76-34.25 25.77-55.29 45.59-75.9l3.23 3.24c1.73 1.65 3.45 3.37 5.25 5-1.44 1.44-2.88 2.8-4.17 4.09C49.47 84 21 102.33 27.21 128.68c5.53 23.63 31.81 34.69 53.35 34.69s47.82-11.06 53.35-34.69c6.18-26.35-22.26-44.73-38.7-60.75C87.45 60.32 79.7 52.57 72 44.81a95 95 0 0 0 8.41-10.05l.14-.14.14.14c20.76 30.09 74.25 54.57 64.49 96.72-6.89 29.3-37.55 43.81-64.62 43.81m20.54-66.14a48 48 0 0 0-4.46-4.67l8.36-8.76c12.07 12.35 23.56 27.79 5.82 42.87-7.68 6.54-19.24 9.48-30.37 9.48s-22.62-2.94-30.31-9.48c-17.8-15.15-6.1-30.66 6-43.08l8.33 8.83a37.3 37.3 0 0 0-4.67 4.81c-13.14 16.3 6.1 26.43 20.61 26.43s33.83-10.13 20.69-26.43m-10.7 10.63a19.71 19.71 0 0 1-19.61-.07l4.1-23.41a11.62 11.62 0 1 1 17.3-10.13 11.44 11.44 0 0 1-6 10.13z\"\n ></path>\n </svg>\n );\n};\n","interface ArweaveIconProps {\n size?: number;\n}\n\nexport const ArweaveIcon = ({ size = 20 }: ArweaveIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n width={size}\n height={size}\n viewBox=\"0 0 31.8 31.8\"\n >\n <circle\n cx=\"15.9\"\n cy=\"15.9\"\n r=\"14.7\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n className=\"arweave_svg__st0\"\n />\n <path\n fill=\"currentColor\"\n d=\"M18.7 21.2c-.1-.1-.1-.3-.2-.5 0-.2-.1-.4-.1-.6-.2.2-.4.3-.6.5s-.5.3-.7.4c-.3.1-.5.2-.9.3-.3.1-.7.1-1 .1-.6 0-1.1-.1-1.6-.3s-.9-.4-1.3-.7-.6-.7-.8-1.1-.3-.9-.3-1.4c0-1.2.5-2.2 1.4-2.8.9-.7 2.3-1 4.1-1h1.7v-.7c0-.6-.2-1-.5-1.3-.4-.3-.9-.5-1.6-.5-.6 0-1 .1-1.3.4s-.4.6-.4 1h-3c0-.5.1-1 .3-1.4s.5-.8 1-1.2c.4-.3.9-.6 1.5-.8q.9-.3 2.1-.3c.7 0 1.3.1 1.9.3s1.1.4 1.6.8c.4.3.8.8 1 1.3s.4 1.1.4 1.8v5c0 .6 0 1.1.1 1.5s.2.8.3 1v.2zm-2.9-2.1c.3 0 .6 0 .8-.1.3-.1.5-.2.7-.3s.4-.2.5-.4l.4-.4v-2h-1.5c-.5 0-.9 0-1.2.1s-.6.2-.8.4-.4.3-.5.6c-.1.2-.1.5-.1.7 0 .4.1.7.4 1s.8.4 1.3.4\"\n className=\"arweave_svg__st1\"\n />\n </svg>\n );\n};\n","interface SkynetIconProps {\n size?: number;\n}\n\nexport const SkynetIcon = ({ size = 20 }: SkynetIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n style={{ color: \"rgb(0, 198, 94)\" }}\n >\n <path\n fill=\"#00c65e\"\n d=\"m0 6.46 21.389 11.297a.917.917 0 0 1 .2 1.485h-.011a10 10 0 0 1-2.234 1.53c-6.912 3.474-14.991-1.837-14.543-9.56l2.86 1.975c.856 4.508 5.618 7.11 9.874 5.393zm8.647 3.151 14.366 5.679a.87.87 0 0 1 .52 1.046v.018a.872.872 0 0 1-1.257.526zm5.29-7.437c2.71-.233 6.095.787 8.111 3.387 1.7 2.195 2.05 4.877 1.93 7.646V13.2a.878.878 0 0 1-1.197.745l-9.765-3.86 9.065 2.432a7.3 7.3 0 0 0-1.068-4.563c-2.968-4.768-9.984-4.535-12.63.42a8 8 0 0 0-.397.883L5.555 7.961q.104-.15.214-.296c.116-.241.242-.487.38-.727 1.612-2.79 4.31-4.433 7.156-4.697.21-.018.421-.049.632-.067z\"\n />\n </svg>\n );\n};\n","interface SwarmIconProps {\n size?: number;\n}\n\nexport const SwarmIcon = ({ size = 20 }: SwarmIconProps) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size * 1.03}\n fill=\"none\"\n >\n <g fill=\"#FF8A00\">\n <path d=\"m0 30.47 8.02 4.502 8.022-4.502v-8.986L8.02 16.977 0 21.484zM26.516.03l-4.24 2.381-.006.036v4.758l4.246 2.382.036.017 4.24-2.376V2.43zM34.4 21.484l-8.02-4.507-8.022 4.507v8.986l8.021 4.502L34.4 30.47z\" />\n <path d=\"m17.137 1.285-8.01 4.502v8.986l8.022 4.501 8.02-4.501v-3.58l-3.905-2.19-1.054-.59V3.119z\" />\n </g>\n </svg>\n );\n};\n","import { ContenthashProtocol } from \"@/types\";\nimport { IpfsIcon } from \"./icons/IpfsIcon\";\nimport { OnionIcon } from \"./icons/OnionIcon\";\nimport { ArweaveIcon } from \"./icons/ArweaveIcon\";\nimport { SkynetIcon } from \"./icons/SkynetIcon\";\nimport { SwarmIcon } from \"./icons/SwarmIcon\";\n\ninterface ContenthashIconProps extends React.SVGProps<SVGSVGElement> {\n protocol: ContenthashProtocol;\n size?: number;\n}\n\nconst icons: Record<ContenthashProtocol, React.FC<{ size?: number }>> = {\n [ContenthashProtocol.Ipfs]: IpfsIcon,\n [ContenthashProtocol.Onion]: OnionIcon,\n [ContenthashProtocol.Arweave]: ArweaveIcon,\n [ContenthashProtocol.Skynet]: SkynetIcon,\n [ContenthashProtocol.Swarm]: SwarmIcon,\n};\n\nexport const ContenthashIcon = (props: ContenthashIconProps) => {\n const { className, size, protocol, ...restProps } = props;\n const _size = size || 20;\n const IconComponent = icons[protocol];\n\n if (!IconComponent) {\n console.warn(`No icon found for protocol: ${protocol}`);\n return null;\n }\n\n return (\n <div className={`ns-chain-icon ${className || \"\"}`}>\n <IconComponent size={_size} />\n </div>\n );\n};\n","import React from \"react\";\nimport { Icon, IconName } from \"@/components/atoms/icon/Icon\";\nimport \"./Alert.css\";\n\nexport type AlertVariant = \"error\" | \"warning\" | \"info\" | \"success\";\n\nexport interface AlertProps {\n variant?: AlertVariant;\n children: React.ReactNode;\n className?: string;\n onClose?: () => void;\n dismissible?: boolean;\n title?: string;\n}\n\nconst variantConfig: Record<AlertVariant, { icon: IconName; colorClass: string }> = {\n error: { icon: \"x-circle\", colorClass: \"ns-alert-error\" },\n warning: { icon: \"alert-triangle\", colorClass: \"ns-alert-warning\" },\n info: { icon: \"info\", colorClass: \"ns-alert-info\" },\n success: { icon: \"check-circle\", colorClass: \"ns-alert-success\" },\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = \"info\",\n children,\n className = \"\",\n onClose,\n dismissible = false,\n title,\n}) => {\n const config = variantConfig[variant];\n \n return (\n <div className={`ns-alert ${config.colorClass} ${className}`} role=\"alert\">\n <div className=\"ns-alert-content\">\n <div className=\"ns-alert-icon\">\n <Icon name={config.icon} size={20} />\n </div>\n <div className=\"ns-alert-message\">\n {title && <div className=\"ns-alert-title\">{title}</div>}\n <div className=\"ns-alert-description\">{children}</div>\n </div>\n {dismissible && onClose && (\n <button\n className=\"ns-alert-close\"\n onClick={onClose}\n aria-label=\"Close alert\"\n type=\"button\"\n >\n <Icon name=\"x\" size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Alert;\n","import React, { useEffect, useRef } from \"react\";\nimport \"./Modal.css\";\nimport { Button, Text } from \"@/components/atoms\"; // alias imports [[memory:7847985]]\n\nexport type ModalSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n children: React.ReactNode;\n /** Optional footer content. If not provided, a default Close button is shown. */\n footer?: React.ReactNode;\n /** Width preset for the dialog */\n size?: ModalSize;\n /** Disable closing on overlay click and Escape */\n isDismissDisabled?: boolean;\n /** Optional id for the title element to improve accessibility */\n titleId?: string;\n /** Additional className for the container */\n className?: string;\n /** Optional styles for the dialog container */\n style?: React.CSSProperties;\n}\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n footer,\n size = \"md\",\n isDismissDisabled,\n titleId,\n className = \"\",\n style,\n}) => {\n const overlayRef = useRef<HTMLDivElement>(null);\n const dialogRef = useRef<HTMLDivElement>(null);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen || isDismissDisabled) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, isDismissDisabled, onClose]);\n\n const handleOverlayClick: React.MouseEventHandler<HTMLDivElement> = e => {\n if (isDismissDisabled) return;\n if (e.target === overlayRef.current) onClose();\n };\n\n if (!isOpen) return null;\n\n const sizeClass = `ns-modal--${size}`;\n const classes = [\"ns-modal\", className, sizeClass].filter(Boolean).join(\" \");\n\n return (\n <div\n ref={overlayRef}\n className=\"ns-modal-overlay\"\n onMouseDown={handleOverlayClick}\n aria-hidden={!isOpen}\n >\n <div\n ref={dialogRef}\n className={classes}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? (titleId || \"ns-modal-title\") : undefined}\n style={style}\n >\n {(title || !isDismissDisabled) && (\n <div className=\"ns-modal__header\">\n {title && (\n <div className=\"ns-modal__title\" id={titleId || \"ns-modal-title\"}>\n {typeof title === \"string\" ? (\n <Text size=\"lg\" weight=\"medium\">{title}</Text>\n ) : (\n title\n )}\n </div>\n )}\n {!isDismissDisabled && (\n <button className=\"ns-modal__close\" aria-label=\"Close\" onClick={onClose}>\n ×\n </button>\n )}\n </div>\n )}\n\n <div className=\"ns-modal__body\">{children}</div>\n\n <div className=\"ns-modal__footer\">\n {footer !== undefined ? footer : (\n <Button variant=\"outline\" onClick={onClose}>Close</Button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n\n\n","export const capitalize = (value: string) => {\n return value.charAt(0).toLocaleUpperCase() + value.substring(1);\n};\n\nexport const equalsIgnoreCase = (a: string, b: string) => {\n return a.toLocaleLowerCase() === b.toLocaleLowerCase();\n}\n\nexport const deepCopy = (a: any): any => {\n return JSON.parse(JSON.stringify(a));\n}","export function convertEVMChainIdToCoinType(chainId: number) {\n return (0x80000000 | chainId) >>> 0;\n}\n","import {\n EnsAddressRecord,\n EnsContenthashRecord,\n EnsRecords,\n EnsTextRecord,\n} from \"@/types\";\nimport { Hash } from \"viem\";\n\nexport interface EnsRecordsDiff {\n textsAdded: EnsTextRecord[];\n textsModified: EnsTextRecord[];\n textsRemoved: EnsTextRecord[];\n addressesAdded: EnsAddressRecord[];\n addressesRemoved: EnsAddressRecord[];\n addressesModified: EnsAddressRecord[];\n contenthashAdded?: EnsContenthashRecord;\n contenthashRemoved: boolean;\n contenthashModified?: EnsContenthashRecord;\n}\n\nexport const getEnsRecordsDiff = (\n oldRecords: EnsRecords,\n newRecords: EnsRecords\n): EnsRecordsDiff => {\n const { textsAdded, textsModified, textsRemoved } = getEnsTextDiff(\n oldRecords.texts,\n newRecords.texts\n );\n const { addressesAdded, addressesModified, addressesRemoved } =\n getEnsAddressDiff(oldRecords.addresses, newRecords.addresses);\n const { contenthashAdded, contenthashModified, contenthashRemoved } =\n getEnsContenthashDiff(oldRecords.contenthash, newRecords.contenthash);\n\n return {\n addressesAdded: addressesAdded as EnsAddressRecord[],\n addressesModified: addressesModified as EnsAddressRecord[],\n addressesRemoved: addressesRemoved as EnsAddressRecord[],\n textsAdded: textsAdded as EnsTextRecord[],\n textsModified: textsModified as EnsTextRecord[],\n textsRemoved: textsRemoved as EnsTextRecord[],\n contenthashAdded,\n contenthashModified,\n contenthashRemoved: contenthashRemoved as boolean,\n };\n};\n\nconst getEnsTextDiff = (\n oldTexts: EnsTextRecord[],\n newTexts: EnsTextRecord[]\n): Partial<EnsRecordsDiff> => {\n if (oldTexts.length === 0) {\n return {\n textsAdded: newTexts,\n textsModified: [],\n textsRemoved: [],\n };\n }\n\n const oldTextMap: Record<string, EnsTextRecord> = {};\n const textsRemoved: EnsTextRecord[] = [];\n\n oldTexts.forEach(text => {\n oldTextMap[text.key] = text;\n\n // check to see if text exists in old but not in new\n const existsInNew = newTexts.find(newText => newText.key === text.key);\n if (!existsInNew) {\n textsRemoved.push(text);\n }\n });\n\n const textsAdded: EnsTextRecord[] = [];\n const textsModified: EnsTextRecord[] = [];\n\n // Check to see if there are new texts\n // that dont exist in old ones\n // or exist and are modified\n newTexts.forEach(newText => {\n const matchingOldText = oldTextMap[newText.key];\n if (!matchingOldText) {\n textsAdded.push(newText);\n } else if (matchingOldText.value !== newText.value) {\n textsModified.push(newText);\n }\n });\n\n return {\n textsAdded,\n textsModified,\n textsRemoved,\n };\n};\n\nconst getEnsAddressDiff = (\n oldAddresses: EnsAddressRecord[],\n newAddresses: EnsAddressRecord[]\n): Partial<EnsRecordsDiff> => {\n if (oldAddresses.length === 0) {\n return {\n addressesAdded: newAddresses,\n addressesModified: [],\n addressesRemoved: [],\n };\n }\n\n const oldAddressMap: Record<string, EnsAddressRecord> = {};\n const addressesRemoved: EnsAddressRecord[] = [];\n\n oldAddresses.forEach(address => {\n oldAddressMap[address.coinType] = address;\n\n // check to see if text exists in old but not in new\n const existsInNew = newAddresses.find(\n newAddress => newAddress.coinType === address.coinType\n );\n if (!existsInNew) {\n addressesRemoved.push(address);\n }\n });\n\n const addressesAdded: EnsAddressRecord[] = [];\n const addressesModified: EnsAddressRecord[] = [];\n\n // Check to see if there are new texts\n // that dont exist in old ones\n // or exist and are modified\n newAddresses.forEach(newAddress => {\n const matchinOldAddress = oldAddressMap[newAddress.coinType];\n if (!matchinOldAddress) {\n addressesAdded.push(newAddress);\n } else if (matchinOldAddress.value !== newAddress.value) {\n addressesModified.push(newAddress);\n }\n });\n\n return {\n addressesAdded,\n addressesModified,\n addressesRemoved,\n };\n};\n\nconst getEnsContenthashDiff = (\n oldRecord: EnsContenthashRecord | undefined,\n newRecord: EnsContenthashRecord | undefined\n): Partial<EnsRecordsDiff> => {\n if (!oldRecord && !newRecord) {\n return {\n contenthashRemoved: false,\n contenthashAdded: undefined,\n contenthashModified: undefined,\n };\n }\n\n if (!oldRecord && newRecord) {\n return {\n contenthashRemoved: false,\n contenthashAdded: newRecord,\n contenthashModified: undefined,\n };\n }\n\n const isSame =\n oldRecord?.protocol === newRecord?.protocol &&\n oldRecord?.value === newRecord?.value;\n return {\n contenthashAdded: undefined,\n contenthashModified: isSame ? undefined : newRecord,\n contenthashRemoved: false,\n };\n};","export const crypto = typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n//# sourceMappingURL=crypto.js.map","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n return (((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n ? (n) => n\n : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\nexport const swap32IfBE = isLE\n ? (u) => u\n : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin)\n return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n if (ch >= asciis._0 && ch <= asciis._9)\n return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F)\n return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f)\n return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin)\n return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string')\n throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n const tmp = hashCons();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashCons();\n return hashC;\n}\nexport function createOptHasher(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport function createXOFer(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n if (len % 4)\n throw new Error('_sha2: outputLen should be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length)\n throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++)\n oview.setUint32(4 * i, state[i], isLE);\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n constructor(outputLen = 32) {\n super(64, outputLen, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = SHA256_IV[0] | 0;\n this.B = SHA256_IV[1] | 0;\n this.C = SHA256_IV[2] | 0;\n this.D = SHA256_IV[3] | 0;\n this.E = SHA256_IV[4] | 0;\n this.F = SHA256_IV[5] | 0;\n this.G = SHA256_IV[6] | 0;\n this.H = SHA256_IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n clean(SHA256_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\nexport class SHA224 extends SHA256 {\n constructor() {\n super(28);\n this.A = SHA224_IV[0] | 0;\n this.B = SHA224_IV[1] | 0;\n this.C = SHA224_IV[2] | 0;\n this.D = SHA224_IV[3] | 0;\n this.E = SHA224_IV[4] | 0;\n this.F = SHA224_IV[5] | 0;\n this.G = SHA224_IV[6] | 0;\n this.H = SHA224_IV[7] | 0;\n }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n constructor(outputLen = 64) {\n super(128, outputLen, 16, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = SHA512_IV[0] | 0;\n this.Al = SHA512_IV[1] | 0;\n this.Bh = SHA512_IV[2] | 0;\n this.Bl = SHA512_IV[3] | 0;\n this.Ch = SHA512_IV[4] | 0;\n this.Cl = SHA512_IV[5] | 0;\n this.Dh = SHA512_IV[6] | 0;\n this.Dl = SHA512_IV[7] | 0;\n this.Eh = SHA512_IV[8] | 0;\n this.El = SHA512_IV[9] | 0;\n this.Fh = SHA512_IV[10] | 0;\n this.Fl = SHA512_IV[11] | 0;\n this.Gh = SHA512_IV[12] | 0;\n this.Gl = SHA512_IV[13] | 0;\n this.Hh = SHA512_IV[14] | 0;\n this.Hl = SHA512_IV[15] | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy() {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nexport class SHA384 extends SHA512 {\n constructor() {\n super(48);\n this.Ah = SHA384_IV[0] | 0;\n this.Al = SHA384_IV[1] | 0;\n this.Bh = SHA384_IV[2] | 0;\n this.Bl = SHA384_IV[3] | 0;\n this.Ch = SHA384_IV[4] | 0;\n this.Cl = SHA384_IV[5] | 0;\n this.Dh = SHA384_IV[6] | 0;\n this.Dl = SHA384_IV[7] | 0;\n this.Eh = SHA384_IV[8] | 0;\n this.El = SHA384_IV[9] | 0;\n this.Fh = SHA384_IV[10] | 0;\n this.Fl = SHA384_IV[11] | 0;\n this.Gh = SHA384_IV[12] | 0;\n this.Gl = SHA384_IV[13] | 0;\n this.Hh = SHA384_IV[14] | 0;\n this.Hl = SHA384_IV[15] | 0;\n }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n constructor() {\n super(28);\n this.Ah = T224_IV[0] | 0;\n this.Al = T224_IV[1] | 0;\n this.Bh = T224_IV[2] | 0;\n this.Bl = T224_IV[3] | 0;\n this.Ch = T224_IV[4] | 0;\n this.Cl = T224_IV[5] | 0;\n this.Dh = T224_IV[6] | 0;\n this.Dl = T224_IV[7] | 0;\n this.Eh = T224_IV[8] | 0;\n this.El = T224_IV[9] | 0;\n this.Fh = T224_IV[10] | 0;\n this.Fl = T224_IV[11] | 0;\n this.Gh = T224_IV[12] | 0;\n this.Gl = T224_IV[13] | 0;\n this.Hh = T224_IV[14] | 0;\n this.Hl = T224_IV[15] | 0;\n }\n}\nexport class SHA512_256 extends SHA512 {\n constructor() {\n super(32);\n this.Ah = T256_IV[0] | 0;\n this.Al = T256_IV[1] | 0;\n this.Bh = T256_IV[2] | 0;\n this.Bl = T256_IV[3] | 0;\n this.Ch = T256_IV[4] | 0;\n this.Cl = T256_IV[5] | 0;\n this.Dh = T256_IV[6] | 0;\n this.Dl = T256_IV[7] | 0;\n this.Eh = T256_IV[8] | 0;\n this.El = T256_IV[9] | 0;\n this.Fh = T256_IV[10] | 0;\n this.Fl = T256_IV[11] | 0;\n this.Gh = T256_IV[12] | 0;\n this.Gl = T256_IV[13] | 0;\n this.Hh = T256_IV[14] | 0;\n this.Hl = T256_IV[15] | 0;\n }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes } from \"./utils.js\";\nexport class HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n ahash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf) {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n aexists(this);\n abytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n//# sourceMappingURL=hmac.js.map","/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { abytes as abytes_, bytesToHex as bytesToHex_, concatBytes as concatBytes_, hexToBytes as hexToBytes_, isBytes as isBytes_, } from '@noble/hashes/utils.js';\nexport { abytes, anumber, bytesToHex, bytesToUtf8, concatBytes, hexToBytes, isBytes, randomBytes, utf8ToBytes, } from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport function abool(title, value) {\n if (typeof value !== 'boolean')\n throw new Error(title + ' boolean expected, got ' + value);\n}\n// tmp name until v2\nexport function _abool2(value, title = '') {\n if (typeof value !== 'boolean') {\n const prefix = title && `\"${title}\"`;\n throw new Error(prefix + 'expected boolean, got type=' + typeof value);\n }\n return value;\n}\n// tmp name until v2\n/** Asserts something is Uint8Array. */\nexport function _abytes2(value, length, title = '') {\n const bytes = isBytes_(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\nexport function hexToNumber(hex) {\n if (typeof hex !== 'string')\n throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes) {\n return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes) {\n abytes_(bytes);\n return hexToNumber(bytesToHex_(Uint8Array.from(bytes).reverse()));\n}\nexport function numberToBytesBE(n, len) {\n return hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n, len) {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n) {\n return hexToBytes_(numberToHexUnpadded(n));\n}\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'secret key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title, hex, expectedLength) {\n let res;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes_(hex);\n }\n catch (e) {\n throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\n }\n }\n else if (isBytes_(hex)) {\n // Uint8Array.from() instead of hash.slice() because node.js Buffer\n // is instance of Uint8Array, and its slice() creates **mutable** copy\n res = Uint8Array.from(hex);\n }\n else {\n throw new Error(title + ' must be hex string or Uint8Array');\n }\n const len = res.length;\n if (typeof expectedLength === 'number' && len !== expectedLength)\n throw new Error(title + ' of length ' + expectedLength + ' expected, got ' + len);\n return res;\n}\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a, b) {\n if (a.length !== b.length)\n return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++)\n diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,\n * and Buffer#slice creates mutable copy. Never use Buffers!\n */\nexport function copyBytes(bytes) {\n return Uint8Array.from(bytes);\n}\n/**\n * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols\n * Should be safe to use for things expected to be ASCII.\n * Returns exact same result as utf8ToBytes for ASCII or throws.\n */\nexport function asciiToBytes(ascii) {\n return Uint8Array.from(ascii, (c, i) => {\n const charCode = c.charCodeAt(0);\n if (c.length !== 1 || charCode > 127) {\n throw new Error(`string contains non-ASCII character \"${ascii[i]}\" with code ${charCode} at position ${i}`);\n }\n return charCode;\n });\n}\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\n// export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\n// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;\n// Is positive bigint\nconst isPosBig = (n) => typeof n === 'bigint' && _0n <= n;\nexport function inRange(n, min, max) {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\n/**\n * Asserts min <= n < max. NOTE: It's < max and not <= max.\n * @example\n * aInRange('x', x, 1n, 256n); // would assume x is in (1n..255n)\n */\nexport function aInRange(title, n, min, max) {\n // Why min <= n < max and not a (min < n < max) OR b (min <= n <= max)?\n // consider P=256n, min=0n, max=P\n // - a for min=0 would require -1: `inRange('x', x, -1n, P)`\n // - b would commonly require subtraction: `inRange('x', x, 0n, P - 1n)`\n // - our way is the cleanest: `inRange('x', x, 0n, P)\n if (!inRange(n, min, max))\n throw new Error('expected valid ' + title + ': ' + min + ' <= n < ' + max + ', got ' + n);\n}\n// Bit operations\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n) {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1)\n ;\n return len;\n}\n/**\n * Gets single bit at position.\n * NOTE: first bit position is 0 (same as arrays)\n * Same as `!!+Array.from(n.toString(2)).reverse()[pos]`\n */\nexport function bitGet(n, pos) {\n return (n >> BigInt(pos)) & _1n;\n}\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n, pos, value) {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\n/**\n * Calculate mask for N bits. Not using ** operator with bigints because of old engines.\n * Same as BigInt(`0b${Array(i).fill('1').join('')}`)\n */\nexport const bitMask = (n) => (_1n << BigInt(n)) - _1n;\n/**\n * Minimal HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n * @returns function that will call DRBG until 2nd arg returns something meaningful\n * @example\n * const drbg = createHmacDRBG<Key>(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(hashLen, qByteLen, hmacFn) {\n if (typeof hashLen !== 'number' || hashLen < 2)\n throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2)\n throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function')\n throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n const u8n = (len) => new Uint8Array(len); // creates Uint8Array\n const u8of = (byte) => Uint8Array.of(byte); // another shortcut\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n(0)) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8of(0x00), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0)\n return;\n k = h(u8of(0x01), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000)\n throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out = [];\n while (len < qByteLen) {\n v = h();\n const sl = v.slice();\n out.push(sl);\n len += v.length;\n }\n return concatBytes_(...out);\n };\n const genUntil = (seed, pred) => {\n reset();\n reseed(seed); // Steps D-G\n let res = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen())))\n reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n// Validating curves and fields\nconst validatorFns = {\n bigint: (val) => typeof val === 'bigint',\n function: (val) => typeof val === 'function',\n boolean: (val) => typeof val === 'boolean',\n string: (val) => typeof val === 'string',\n stringOrUint8Array: (val) => typeof val === 'string' || isBytes_(val),\n isSafeInteger: (val) => Number.isSafeInteger(val),\n array: (val) => Array.isArray(val),\n field: (val, object) => object.Fp.isValid(val),\n hash: (val) => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n};\n// type Record<K extends string | number | symbol, T> = { [P in K]: T; }\nexport function validateObject(object, validators, optValidators = {}) {\n const checkField = (fieldName, type, isOptional) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function')\n throw new Error('invalid validator function');\n const val = object[fieldName];\n if (isOptional && val === undefined)\n return;\n if (!checkVal(val, object)) {\n throw new Error('param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val);\n }\n };\n for (const [fieldName, type] of Object.entries(validators))\n checkField(fieldName, type, false);\n for (const [fieldName, type] of Object.entries(optValidators))\n checkField(fieldName, type, true);\n return object;\n}\n// validate type tests\n// const o: { a: number; b: number; c: number } = { a: 1, b: 5, c: 6 };\n// const z0 = validateObject(o, { a: 'isSafeInteger' }, { c: 'bigint' }); // Ok!\n// // Should fail type-check\n// const z1 = validateObject(o, { a: 'tmp' }, { c: 'zz' });\n// const z2 = validateObject(o, { a: 'isSafeInteger' }, { c: 'zz' });\n// const z3 = validateObject(o, { test: 'boolean', z: 'bug' });\n// const z4 = validateObject(o, { a: 'boolean', z: 'bug' });\nexport function isHash(val) {\n return typeof val === 'function' && Number.isSafeInteger(val.outputLen);\n}\nexport function _validateObject(object, fields, optFields = {}) {\n if (!object || typeof object !== 'object')\n throw new Error('expected valid options object');\n function checkField(fieldName, expectedType, isOpt) {\n const val = object[fieldName];\n if (isOpt && val === undefined)\n return;\n const current = typeof val;\n if (current !== expectedType || val === null)\n throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n }\n Object.entries(fields).forEach(([k, v]) => checkField(k, v, false));\n Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true));\n}\n/**\n * throws not implemented error\n */\nexport const notImplemented = () => {\n throw new Error('not implemented');\n};\n/**\n * Memoizes (caches) computation result.\n * Uses WeakMap: the value is going auto-cleaned by GC after last reference is removed.\n */\nexport function memoized(fn) {\n const map = new WeakMap();\n return (arg, ...args) => {\n const val = map.get(arg);\n if (val !== undefined)\n return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n//# sourceMappingURL=utils.js.map","/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { _validateObject, anumber, bitMask, bytesToNumberBE, bytesToNumberLE, ensureBytes, numberToBytesBE, numberToBytesLE, } from \"../utils.js\";\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _7n = /* @__PURE__ */ BigInt(7);\n// prettier-ignore\nconst _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);\n// Calculates a modulo b\nexport function mod(a, b) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num, power, modulo) {\n return FpPow(Field(modulo), num, power);\n}\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x, power, modulo) {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number, modulo) {\n if (number === _0n)\n throw new Error('invert: expected non-zero number');\n if (modulo <= _0n)\n throw new Error('invert: expected positive modulus, got ' + modulo);\n // Fermat's little theorem \"CT-like\" version inv(n) = n^(m-2) mod m is 30x slower.\n let a = mod(number, modulo);\n let b = modulo;\n // prettier-ignore\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n // JIT applies optimization if those two lines follow each other\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n // prettier-ignore\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction assertIsSquare(Fp, root, n) {\n if (!Fp.eql(Fp.sqr(root), n))\n throw new Error('Cannot find square root');\n}\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp, n) {\n const p1div4 = (Fp.ORDER + _1n) / _4n;\n const root = Fp.pow(n, p1div4);\n assertIsSquare(Fp, root, n);\n return root;\n}\nfunction sqrt5mod8(Fp, n) {\n const p5div8 = (Fp.ORDER - _5n) / _8n;\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, p5div8);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n assertIsSquare(Fp, root, n);\n return root;\n}\n// Based on RFC9380, Kong algorithm\n// prettier-ignore\nfunction sqrt9mod16(P) {\n const Fp_ = Field(P);\n const tn = tonelliShanks(P);\n const c1 = tn(Fp_, Fp_.neg(Fp_.ONE)); // 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n const c2 = tn(Fp_, c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n const c3 = tn(Fp_, Fp_.neg(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n return (Fp, n) => {\n let tv1 = Fp.pow(n, c4); // 1. tv1 = x^c4\n let tv2 = Fp.mul(tv1, c1); // 2. tv2 = c1 * tv1\n const tv3 = Fp.mul(tv1, c2); // 3. tv3 = c2 * tv1\n const tv4 = Fp.mul(tv1, c3); // 4. tv4 = c3 * tv1\n const e1 = Fp.eql(Fp.sqr(tv2), n); // 5. e1 = (tv2^2) == x\n const e2 = Fp.eql(Fp.sqr(tv3), n); // 6. e2 = (tv3^2) == x\n tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n const e3 = Fp.eql(Fp.sqr(tv2), n); // 9. e3 = (tv2^2) == x\n const root = Fp.cmov(tv1, tv2, e3); // 10. z = CMOV(tv1, tv2, e3) # Select sqrt from tv1 & tv2\n assertIsSquare(Fp, root, n);\n return root;\n };\n}\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P) {\n // Initialization (precomputation).\n // Caching initialization could boost perf by 7%.\n if (P < _3n)\n throw new Error('sqrt is not defined for small field');\n // Factor P - 1 = Q * 2^S, where Q is odd\n let Q = P - _1n;\n let S = 0;\n while (Q % _2n === _0n) {\n Q /= _2n;\n S++;\n }\n // Find the first quadratic non-residue Z >= 2\n let Z = _2n;\n const _Fp = Field(P);\n while (FpLegendre(_Fp, Z) === 1) {\n // Basic primality test for P. After x iterations, chance of\n // not finding quadratic non-residue is 2^x, so 2^1000.\n if (Z++ > 1000)\n throw new Error('Cannot find square root: probably non-prime P');\n }\n // Fast-path; usually done before Z, but we do \"primality test\".\n if (S === 1)\n return sqrt3mod4;\n // Slow-path\n // TODO: test on Fp2 and others\n let cc = _Fp.pow(Z, Q); // c = z^Q\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp, n) {\n if (Fp.is0(n))\n return n;\n // Check if n is a quadratic residue using Legendre symbol\n if (FpLegendre(Fp, n) !== 1)\n throw new Error('Cannot find square root');\n // Initialize variables for the main loop\n let M = S;\n let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n // Main loop\n // while t != 1\n while (!Fp.eql(t, Fp.ONE)) {\n if (Fp.is0(t))\n return Fp.ZERO; // if t=0 return R=0\n let i = 1;\n // Find the smallest i >= 1 such that t^(2^i) ≡ 1 (mod P)\n let t_tmp = Fp.sqr(t); // t^(2^1)\n while (!Fp.eql(t_tmp, Fp.ONE)) {\n i++;\n t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n if (i === M)\n throw new Error('Cannot find square root');\n }\n // Calculate the exponent for b: 2^(M - i - 1)\n const exponent = _1n << BigInt(M - i - 1); // bigint is important\n const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n // Update variables\n M = i;\n c = Fp.sqr(b); // c = b^2\n t = Fp.mul(t, c); // t = (t * b^2)\n R = Fp.mul(R, b); // R = R*b\n }\n return R;\n };\n}\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P ≡ 3 (mod 4)\n * 2. P ≡ 5 (mod 8)\n * 3. P ≡ 9 (mod 16)\n * 4. Tonelli-Shanks algorithm\n *\n * Different algorithms can give different roots, it is up to user to decide which one they want.\n * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).\n */\nexport function FpSqrt(P) {\n // P ≡ 3 (mod 4) => √n = n^((P+1)/4)\n if (P % _4n === _3n)\n return sqrt3mod4;\n // P ≡ 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n if (P % _8n === _5n)\n return sqrt5mod8;\n // P ≡ 9 (mod 16) => Kong algorithm, page 11 of https://eprint.iacr.org/2012/685.pdf (algorithm 4)\n if (P % _16n === _9n)\n return sqrt9mod16(P);\n // Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num, modulo) => (mod(num, modulo) & _1n) === _1n;\n// prettier-ignore\nconst FIELD_FIELDS = [\n 'create', 'isValid', 'is0', 'neg', 'inv', 'sqrt', 'sqr',\n 'eql', 'add', 'sub', 'mul', 'pow', 'div',\n 'addN', 'subN', 'mulN', 'sqrN'\n];\nexport function validateField(field) {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'number',\n BITS: 'number',\n };\n const opts = FIELD_FIELDS.reduce((map, val) => {\n map[val] = 'function';\n return map;\n }, initial);\n _validateObject(field, opts);\n // const max = 16384;\n // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n return field;\n}\n// Generic field functions\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp, num, power) {\n if (power < _0n)\n throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n)\n return Fp.ONE;\n if (power === _1n)\n return num;\n let p = Fp.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n)\n p = Fp.mul(p, d);\n d = Fp.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp, nums, passZero = false) {\n const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n // Walk from first to last, multiply them by each other MOD p\n const multipliedAcc = nums.reduce((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = acc;\n return Fp.mul(acc, num);\n }, Fp.ONE);\n // Invert last element\n const invertedAcc = Fp.inv(multipliedAcc);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (Fp.is0(num))\n return acc;\n inverted[i] = Fp.mul(acc, inverted[i]);\n return Fp.mul(acc, num);\n }, invertedAcc);\n return inverted;\n}\n// TODO: remove\nexport function FpDiv(Fp, lhs, rhs) {\n return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue\n * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) ≡ 0 if a ≡ 0 (mod p)\n */\nexport function FpLegendre(Fp, n) {\n // We can use 3rd argument as optional cache of this value\n // but seems unneeded for now. The operation is very fast.\n const p1mod2 = (Fp.ORDER - _1n) / _2n;\n const powered = Fp.pow(n, p1mod2);\n const yes = Fp.eql(powered, Fp.ONE);\n const zero = Fp.eql(powered, Fp.ZERO);\n const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n if (!yes && !zero && !no)\n throw new Error('invalid Legendre symbol result');\n return yes ? 1 : zero ? 0 : -1;\n}\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp, n) {\n const l = FpLegendre(Fp, n);\n return l === 1;\n}\n// CURVE.n lengths\nexport function nLength(n, nBitLength) {\n // Bit size, byte size of CURVE.n\n if (nBitLength !== undefined)\n anumber(nBitLength);\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER, bitLenOrOpts, // TODO: use opts only in v2?\nisLE = false, opts = {}) {\n if (ORDER <= _0n)\n throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n let _nbitLength = undefined;\n let _sqrt = undefined;\n let modFromBytes = false;\n let allowedLengths = undefined;\n if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {\n if (opts.sqrt || isLE)\n throw new Error('cannot specify opts in two arguments');\n const _opts = bitLenOrOpts;\n if (_opts.BITS)\n _nbitLength = _opts.BITS;\n if (_opts.sqrt)\n _sqrt = _opts.sqrt;\n if (typeof _opts.isLE === 'boolean')\n isLE = _opts.isLE;\n if (typeof _opts.modFromBytes === 'boolean')\n modFromBytes = _opts.modFromBytes;\n allowedLengths = _opts.allowedLengths;\n }\n else {\n if (typeof bitLenOrOpts === 'number')\n _nbitLength = bitLenOrOpts;\n if (opts.sqrt)\n _sqrt = opts.sqrt;\n }\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, _nbitLength);\n if (BYTES > 2048)\n throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n let sqrtP; // cached sqrtP\n const f = Object.freeze({\n ORDER,\n isLE,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n allowedLengths: allowedLengths,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n // is valid and invertible\n isValidNot0: (num) => !f.is0(num) && f.isValid(num),\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n sqr: (num) => mod(num * num, ORDER),\n add: (lhs, rhs) => mod(lhs + rhs, ORDER),\n sub: (lhs, rhs) => mod(lhs - rhs, ORDER),\n mul: (lhs, rhs) => mod(lhs * rhs, ORDER),\n pow: (num, power) => FpPow(f, num, power),\n div: (lhs, rhs) => mod(lhs * invert(rhs, ORDER), ORDER),\n // Same as above, but doesn't normalize\n sqrN: (num) => num * num,\n addN: (lhs, rhs) => lhs + rhs,\n subN: (lhs, rhs) => lhs - rhs,\n mulN: (lhs, rhs) => lhs * rhs,\n inv: (num) => invert(num, ORDER),\n sqrt: _sqrt ||\n ((n) => {\n if (!sqrtP)\n sqrtP = FpSqrt(ORDER);\n return sqrtP(f, n);\n }),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes, skipValidation = true) => {\n if (allowedLengths) {\n if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {\n throw new Error('Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length);\n }\n const padded = new Uint8Array(BYTES);\n // isLE add 0 to right, !isLE to the left.\n padded.set(bytes, isLE ? 0 : padded.length - bytes.length);\n bytes = padded;\n }\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n if (modFromBytes)\n scalar = mod(scalar, ORDER);\n if (!skipValidation)\n if (!f.isValid(scalar))\n throw new Error('invalid field element: outside of range 0..ORDER');\n // NOTE: we don't validate scalar here, please use isValid. This done such way because some\n // protocol may allow non-reduced scalar that reduced later or changed some other way.\n return scalar;\n },\n // TODO: we don't need it here, move out to separate fn\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // We can't move this out because Fp6, Fp12 implement it\n // and it's unclear what to return in there.\n cmov: (a, b, c) => (c ? b : a),\n });\n return Object.freeze(f);\n}\n// Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?\n// This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).\n// which mean we cannot force this via opts.\n// Not sure what to do with randomBytes, we can accept it inside opts if wanted.\n// Probably need to export getMinHashLength somewhere?\n// random(bytes?: Uint8Array, unsafeAllowZero = false, unsafeAllowBias = false) {\n// const LEN = !unsafeAllowBias ? getMinHashLength(ORDER) : BYTES;\n// if (bytes === undefined) bytes = randomBytes(LEN); // _opts.randomBytes?\n// const num = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n// // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n// const reduced = unsafeAllowZero ? mod(num, ORDER) : mod(num, ORDER - _1n) + _1n;\n// return reduced;\n// },\nexport function FpSqrtOdd(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\nexport function FpSqrtEven(Fp, elm) {\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? Fp.neg(root) : root;\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Same as mapKeyToField, but accepts less bytes (40 instead of 48 for 32-byte field).\n * Which makes it slightly more biased, less secure.\n * @deprecated use `mapKeyToField` instead\n */\nexport function hashToPrivateScalar(hash, groupOrder, isLE = false) {\n hash = ensureBytes('privateHash', hash);\n const hashLen = hash.length;\n const minLen = nLength(groupOrder).nByteLength + 8;\n if (minLen < 24 || hashLen < minLen || hashLen > 1024)\n throw new Error('hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen);\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\n/**\n * Returns total number of bytes consumed by the field element.\n * For example, 32 bytes for usual 256-bit weierstrass curve.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of field\n */\nexport function getFieldBytesLength(fieldOrder) {\n if (typeof fieldOrder !== 'bigint')\n throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\n/**\n * Returns minimal amount of bytes that can be safely reduced\n * by field order.\n * Should be 2^-128 for 128-bit curve such as P256.\n * @param fieldOrder number of field elements, usually CURVE.n\n * @returns byte length of target hash\n */\nexport function getMinHashLength(fieldOrder) {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\n/**\n * \"Constant-time\" private key generation utility.\n * Can take (n + n/2) or more bytes of uniform input e.g. from CSPRNG or KDF\n * and convert them into private scalar, with the modulo bias being negligible.\n * Needs at least 48 bytes of input for 32-byte private key.\n * https://research.kudelskisecurity.com/2020/07/28/the-definitive-guide-to-modulo-bias-and-how-to-avoid-it/\n * FIPS 186-5, A.2 https://csrc.nist.gov/publications/detail/fips/186/5/final\n * RFC 9380, https://www.rfc-editor.org/rfc/rfc9380#section-5\n * @param hash hash output from SHA3 or a similar function\n * @param groupOrder size of subgroup - (e.g. secp256k1.CURVE.n)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key, fieldOrder, isLE = false) {\n const len = key.length;\n const fieldLen = getFieldBytesLength(fieldOrder);\n const minLen = getMinHashLength(fieldOrder);\n // No small numbers: need to understand bias story. No huge numbers: easier to detect JS timings.\n if (len < 16 || len < minLen || len > 1024)\n throw new Error('expected ' + minLen + '-1024 bytes of input, got ' + len);\n const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key);\n // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n const reduced = mod(num, fieldOrder - _1n) + _1n;\n return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen);\n}\n//# sourceMappingURL=modular.js.map","/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask, validateObject } from \"../utils.js\";\nimport { Field, FpInvertBatch, nLength, validateField } from \"./modular.js\";\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nexport function negateCt(condition, item) {\n const neg = item.negate();\n return condition ? neg : item;\n}\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ(c, points) {\n const invertedZs = FpInvertBatch(c.Fp, points.map((p) => p.Z));\n return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));\n}\nfunction validateW(W, bits) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\nfunction calcWOpts(W, scalarBits) {\n validateW(W, scalarBits);\n const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n const maxNumber = 2 ** W; // W=8 256\n const mask = bitMask(W); // W=8 255 == mask 0b11111111\n const shiftBy = BigInt(W); // W=8 8\n return { windows, windowSize, mask, maxNumber, shiftBy };\n}\nfunction calcOffsets(n, window, wOpts) {\n const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n let wbits = Number(n & mask); // extract W bits.\n let nextN = n >> shiftBy; // shift number by W bits.\n // What actually happens here:\n // const highestBit = Number(mask ^ (mask >> 1n));\n // let wbits2 = wbits - 1; // skip zero\n // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n // split if bits > max: +224 => 256-32\n if (wbits > windowSize) {\n // we skip zero, which means instead of `>= size-1`, we do `> size`\n wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n nextN += _1n; // +256 (carry)\n }\n const offsetStart = window * windowSize;\n const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n const isZero = wbits === 0; // is current window slice a 0?\n const isNeg = wbits < 0; // is current window slice negative?\n const isNegF = window % 2 !== 0; // fake random statement for noise\n const offsetF = offsetStart; // fake offset for noise\n return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\nfunction validateMSMPoints(points, c) {\n if (!Array.isArray(points))\n throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c))\n throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars, field) {\n if (!Array.isArray(scalars))\n throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s))\n throw new Error('invalid scalar at index ' + i);\n });\n}\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\nfunction getW(P) {\n // To disable precomputes:\n // return 1;\n return pointWindowSizes.get(P) || 1;\n}\nfunction assert0(n) {\n if (n !== _0n)\n throw new Error('invalid wNAF');\n}\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Table generation takes **30MB of ram and 10ms on high-end CPU**,\n * but may take much longer on slow devices. Actual generation will happen on\n * first call of `multiply()`. By default, `BASE` point is precomputed.\n *\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / 𝑊) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport class wNAF {\n // Parametrized with a given Point class (not individual point)\n constructor(Point, bits) {\n this.BASE = Point.BASE;\n this.ZERO = Point.ZERO;\n this.Fn = Point.Fn;\n this.bits = bits;\n }\n // non-const time multiplication ladder\n _unsafeLadder(elm, n, p = this.ZERO) {\n let d = elm;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n /**\n * Creates a wNAF precomputation window. Used for caching.\n * Default window size is set by `utils.precompute()` and is equal to 8.\n * Number of precomputed points depends on the curve size:\n * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where:\n * - 𝑊 is the window size\n * - 𝑛 is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param point Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n precomputeWindow(point, W) {\n const { windows, windowSize } = calcWOpts(W, this.bits);\n const points = [];\n let p = point;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // i=1, bc we skip 0\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * More compact implementation:\n * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n * @returns real and fake (for const-time) points\n */\n wNAF(W, precomputes, n) {\n // Scalar should be smaller than field order\n if (!this.Fn.isValid(n))\n throw new Error('invalid scalar');\n // Accumulators\n let p = this.ZERO;\n let f = this.BASE;\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // bits are 0: add garbage to fake point\n // Important part for const-time getPublicKey: add random \"noise\" point to f.\n f = f.add(negateCt(isNegF, precomputes[offsetF]));\n }\n else {\n // bits are 1: add to result point\n p = p.add(negateCt(isNeg, precomputes[offset]));\n }\n }\n assert0(n);\n // Return both real and fake points: JIT won't eliminate f.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n }\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n wNAFUnsafe(W, precomputes, n, acc = this.ZERO) {\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n if (n === _0n)\n break; // Early-exit, skip 0 value\n const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // Window bits are 0: skip processing.\n // Move to next window.\n continue;\n }\n else {\n const item = precomputes[offset];\n acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n }\n }\n assert0(n);\n return acc;\n }\n getPrecomputes(W, point, transform) {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(point);\n if (!comp) {\n comp = this.precomputeWindow(point, W);\n if (W !== 1) {\n // Doing transform outside of if brings 15% perf hit\n if (typeof transform === 'function')\n comp = transform(comp);\n pointPrecomputes.set(point, comp);\n }\n }\n return comp;\n }\n cached(point, scalar, transform) {\n const W = getW(point);\n return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);\n }\n unsafe(point, scalar, transform, prev) {\n const W = getW(point);\n if (W === 1)\n return this._unsafeLadder(point, scalar, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);\n }\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n createCache(P, W) {\n validateW(W, this.bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n }\n hasCache(elm) {\n return getW(elm) !== 1;\n }\n}\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe(Point, point, k1, k2) {\n let acc = point;\n let p1 = Point.ZERO;\n let p2 = Point.ZERO;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n p1 = p1.add(acc);\n if (k2 & _1n)\n p2 = p2.add(acc);\n acc = acc.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n return { p1, p2 };\n}\n/**\n * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * 30x faster vs naive addition on L=4096, 10x faster than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka secret keys / bigints)\n */\nexport function pippenger(c, fieldN, points, scalars) {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n const plength = points.length;\n const slength = scalars.length;\n if (plength !== slength)\n throw new Error('arrays of points and scalars must have equal length');\n // if (plength === 0) throw new Error('array must be of length >= 2');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(plength));\n let windowSize = 1; // bits\n if (wbits > 12)\n windowSize = wbits - 3;\n else if (wbits > 4)\n windowSize = wbits - 2;\n else if (wbits > 0)\n windowSize = 2;\n const MASK = bitMask(windowSize);\n const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < slength; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & MASK);\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0)\n for (let j = 0; j < windowSize; j++)\n sum = sum.double();\n }\n return sum;\n}\n/**\n * Precomputed multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @returns function which multiplies points with scaars\n */\nexport function precomputeMSMUnsafe(c, fieldN, points, windowSize) {\n /**\n * Performance Analysis of Window-based Precomputation\n *\n * Base Case (256-bit scalar, 8-bit window):\n * - Standard precomputation requires:\n * - 31 additions per scalar × 256 scalars = 7,936 ops\n * - Plus 255 summary additions = 8,191 total ops\n * Note: Summary additions can be optimized via accumulator\n *\n * Chunked Precomputation Analysis:\n * - Using 32 chunks requires:\n * - 255 additions per chunk\n * - 256 doublings\n * - Total: (255 × 32) + 256 = 8,416 ops\n *\n * Memory Usage Comparison:\n * Window Size | Standard Points | Chunked Points\n * ------------|-----------------|---------------\n * 4-bit | 520 | 15\n * 8-bit | 4,224 | 255\n * 10-bit | 13,824 | 1,023\n * 16-bit | 557,056 | 65,535\n *\n * Key Advantages:\n * 1. Enables larger window sizes due to reduced memory overhead\n * 2. More efficient for smaller scalar counts:\n * - 16 chunks: (16 × 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = bitMask(windowSize);\n const tables = points.map((p) => {\n const res = [];\n for (let i = 0, acc = p; i < tableSize; i++) {\n res.push(acc);\n acc = acc.add(p);\n }\n return res;\n });\n return (scalars) => {\n validateMSMScalars(scalars, fieldN);\n if (scalars.length > points.length)\n throw new Error('array of scalars must be smaller than array of points');\n let res = zero;\n for (let i = 0; i < chunks; i++) {\n // No need to double if accumulator is still zero.\n if (res !== zero)\n for (let j = 0; j < windowSize; j++)\n res = res.double();\n const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize);\n for (let j = 0; j < scalars.length; j++) {\n const n = scalars[j];\n const curr = Number((n >> shiftBy) & MASK);\n if (!curr)\n continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\n// TODO: remove\n/** @deprecated */\nexport function validateBasic(curve) {\n validateField(curve.Fp);\n validateObject(curve, {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n }, {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n });\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n });\n}\nfunction createField(order, field, isLE) {\n if (field) {\n if (field.ORDER !== order)\n throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n validateField(field);\n return field;\n }\n else {\n return Field(order, { isLE });\n }\n}\n/** Validates CURVE opts and creates fields */\nexport function _createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) {\n if (FpFnLE === undefined)\n FpFnLE = type === 'edwards';\n if (!CURVE || typeof CURVE !== 'object')\n throw new Error(`expected valid ${type} CURVE object`);\n for (const p of ['p', 'n', 'h']) {\n const val = CURVE[p];\n if (!(typeof val === 'bigint' && val > _0n))\n throw new Error(`CURVE.${p} must be positive bigint`);\n }\n const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);\n const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);\n const _b = type === 'weierstrass' ? 'b' : 'd';\n const params = ['Gx', 'Gy', 'a', _b];\n for (const p of params) {\n // @ts-ignore\n if (!Fp.isValid(CURVE[p]))\n throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n }\n CURVE = Object.freeze(Object.assign({}, CURVE));\n return { CURVE, Fp, Fn };\n}\n//# sourceMappingURL=curve.js.map","/**\n * Short Weierstrass curve methods. The formula is: y² = x³ + ax + b.\n *\n * ### Design rationale for types\n *\n * * Interaction between classes from different curves should fail:\n * `k256.Point.BASE.add(p256.Point.BASE)`\n * * For this purpose we want to use `instanceof` operator, which is fast and works during runtime\n * * Different calls of `curve()` would return different classes -\n * `curve(params) !== curve(params)`: if somebody decided to monkey-patch their curve,\n * it won't affect others\n *\n * TypeScript can't infer types for classes created inside a function. Classes is one instance\n * of nominative types in TypeScript and interfaces only check for shape, so it's hard to create\n * unique type for every function call.\n *\n * We can use generic types via some param, like curve opts, but that would:\n * 1. Enable interaction between `curve(params)` and `curve(params)` (curves of same params)\n * which is hard to debug.\n * 2. Params can be generic and we can't enforce them to be constant value:\n * if somebody creates curve from non-constant params,\n * it would be allowed to interact with other curves with non-constant params\n *\n * @todo https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html#unique-symbol\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { hmac as nobleHmac } from '@noble/hashes/hmac.js';\nimport { ahash } from '@noble/hashes/utils';\nimport { _validateObject, _abool2 as abool, _abytes2 as abytes, aInRange, bitLen, bitMask, bytesToHex, bytesToNumberBE, concatBytes, createHmacDrbg, ensureBytes, hexToBytes, inRange, isBytes, memoized, numberToHexUnpadded, randomBytes as randomBytesWeb, } from \"../utils.js\";\nimport { _createCurveFields, mulEndoUnsafe, negateCt, normalizeZ, pippenger, wNAF, } from \"./curve.js\";\nimport { Field, FpInvertBatch, getMinHashLength, mapHashToField, nLength, validateField, } from \"./modular.js\";\n// We construct basis in such way that den is always positive and equals n, but num sign depends on basis (not on secret value)\nconst divNearest = (num, den) => (num + (num >= 0 ? den : -den) / _2n) / den;\n/**\n * Splits scalar for GLV endomorphism.\n */\nexport function _splitEndoScalar(k, basis, n) {\n // Split scalar into two such that part is ~half bits: `abs(part) < sqrt(N)`\n // Since part can be negative, we need to do this on point.\n // TODO: verifyScalar function which consumes lambda\n const [[a1, b1], [a2, b2]] = basis;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n // |k1|/|k2| is < sqrt(N), but can be negative.\n // If we do `k1 mod N`, we'll get big scalar (`> sqrt(N)`): so, we do cheaper negation instead.\n let k1 = k - c1 * a1 - c2 * a2;\n let k2 = -c1 * b1 - c2 * b2;\n const k1neg = k1 < _0n;\n const k2neg = k2 < _0n;\n if (k1neg)\n k1 = -k1;\n if (k2neg)\n k2 = -k2;\n // Double check that resulting scalar less than half bits of N: otherwise wNAF will fail.\n // This should only happen on wrong basises. Also, math inside is too complex and I don't trust it.\n const MAX_NUM = bitMask(Math.ceil(bitLen(n) / 2)) + _1n; // Half bits of N\n if (k1 < _0n || k1 >= MAX_NUM || k2 < _0n || k2 >= MAX_NUM) {\n throw new Error('splitScalar (endomorphism): failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction validateSigFormat(format) {\n if (!['compact', 'recovered', 'der'].includes(format))\n throw new Error('Signature format must be \"compact\", \"recovered\", or \"der\"');\n return format;\n}\nfunction validateSigOpts(opts, def) {\n const optsn = {};\n for (let optName of Object.keys(def)) {\n // @ts-ignore\n optsn[optName] = opts[optName] === undefined ? def[optName] : opts[optName];\n }\n abool(optsn.lowS, 'lowS');\n abool(optsn.prehash, 'prehash');\n if (optsn.format !== undefined)\n validateSigFormat(optsn.format);\n return optsn;\n}\nexport class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n}\n/**\n * ASN.1 DER encoding utilities. ASN is very complex & fragile. Format:\n *\n * [0x30 (SEQUENCE), bytelength, 0x02 (INTEGER), intLength, R, 0x02 (INTEGER), intLength, S]\n *\n * Docs: https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/, https://luca.ntop.org/Teaching/Appunti/asn1.html\n */\nexport const DER = {\n // asn.1 DER encoding utils\n Err: DERErr,\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag, data) => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length & 1)\n throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 128)\n throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 128) : '';\n const t = numberToHexUnpadded(tag);\n return t + lenLen + len + data;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag, data) {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256)\n throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag)\n throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 128); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong)\n length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 127;\n if (!lenLen)\n throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4)\n throw new E('tlv.decode(long): byte length is too big'); // this will overflow u32 in js\n const lengthBytes = data.subarray(pos, pos + lenLen);\n if (lengthBytes.length !== lenLen)\n throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0)\n throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes)\n length = (length << 8) | b;\n pos += lenLen;\n if (length < 128)\n throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length)\n throw new E('tlv.decode: wrong value length');\n return { v, l: data.subarray(pos + length) };\n },\n },\n // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag,\n // since we always use positive integers here. It must always be empty:\n // - add zero byte if exists\n // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding)\n _int: {\n encode(num) {\n const { Err: E } = DER;\n if (num < _0n)\n throw new E('integer: negative integers are not allowed');\n let hex = numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000)\n hex = '00' + hex;\n if (hex.length & 1)\n throw new E('unexpected DER parsing assertion: unpadded hex');\n return hex;\n },\n decode(data) {\n const { Err: E } = DER;\n if (data[0] & 128)\n throw new E('invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 128))\n throw new E('invalid signature integer: unnecessary leading zero');\n return bytesToNumberBE(data);\n },\n },\n toSig(hex) {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = ensureBytes('signature', hex);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n const { v: rBytes, l: rLeftBytes } = tlv.decode(0x02, seqBytes);\n const { v: sBytes, l: sLeftBytes } = tlv.decode(0x02, rLeftBytes);\n if (sLeftBytes.length)\n throw new E('invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig) {\n const { _tlv: tlv, _int: int } = DER;\n const rs = tlv.encode(0x02, int.encode(sig.r));\n const ss = tlv.encode(0x02, int.encode(sig.s));\n const seq = rs + ss;\n return tlv.encode(0x30, seq);\n },\n};\n// Be friendly to bad ECMAScript parsers by not using bigint literals\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4);\nexport function _normFnElement(Fn, key) {\n const { BYTES: expected } = Fn;\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else {\n let bytes = ensureBytes('private key', key);\n try {\n num = Fn.fromBytes(bytes);\n }\n catch (error) {\n throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`);\n }\n }\n if (!Fn.isValidNot0(num))\n throw new Error('invalid private key: out of range [1..N-1]');\n return num;\n}\n/**\n * Creates weierstrass Point constructor, based on specified curve options.\n *\n * @example\n```js\nconst opts = {\n p: BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'),\n n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),\n h: BigInt(1),\n a: BigInt('0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc'),\n b: BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b'),\n Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),\n Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),\n};\nconst p256_Point = weierstrass(opts);\n```\n */\nexport function weierstrassN(params, extraOpts = {}) {\n const validated = _createCurveFields('weierstrass', params, extraOpts);\n const { Fp, Fn } = validated;\n let CURVE = validated.CURVE;\n const { h: cofactor, n: CURVE_ORDER } = CURVE;\n _validateObject(extraOpts, {}, {\n allowInfinityPoint: 'boolean',\n clearCofactor: 'function',\n isTorsionFree: 'function',\n fromBytes: 'function',\n toBytes: 'function',\n endo: 'object',\n wrapPrivateKey: 'boolean',\n });\n const { endo } = extraOpts;\n if (endo) {\n // validateObject(endo, { beta: 'bigint', splitScalar: 'function' });\n if (!Fp.is0(CURVE.a) || typeof endo.beta !== 'bigint' || !Array.isArray(endo.basises)) {\n throw new Error('invalid endo: expected \"beta\": bigint and \"basises\": array');\n }\n }\n const lengths = getWLengths(Fp, Fn);\n function assertCompressionIsSupported() {\n if (!Fp.isOdd)\n throw new Error('compression is not supported: Field does not have .isOdd()');\n }\n // Implements IEEE P1363 point encoding\n function pointToBytes(_c, point, isCompressed) {\n const { x, y } = point.toAffine();\n const bx = Fp.toBytes(x);\n abool(isCompressed, 'isCompressed');\n if (isCompressed) {\n assertCompressionIsSupported();\n const hasEvenY = !Fp.isOdd(y);\n return concatBytes(pprefix(hasEvenY), bx);\n }\n else {\n return concatBytes(Uint8Array.of(0x04), bx, Fp.toBytes(y));\n }\n }\n function pointFromBytes(bytes) {\n abytes(bytes, undefined, 'Point');\n const { publicKey: comp, publicKeyUncompressed: uncomp } = lengths; // e.g. for 32-byte: 33, 65\n const length = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // No actual validation is done here: use .assertValidity()\n if (length === comp && (head === 0x02 || head === 0x03)) {\n const x = Fp.fromBytes(tail);\n if (!Fp.isValid(x))\n throw new Error('bad point: is not on curve, wrong x');\n const y2 = weierstrassEquation(x); // y² = x³ + ax + b\n let y;\n try {\n y = Fp.sqrt(y2); // y = y² ^ (p+1)/4\n }\n catch (sqrtError) {\n const err = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('bad point: is not on curve, sqrt error' + err);\n }\n assertCompressionIsSupported();\n const isYOdd = Fp.isOdd(y); // (y & _1n) === _1n;\n const isHeadOdd = (head & 1) === 1; // ECDSA-specific\n if (isHeadOdd !== isYOdd)\n y = Fp.neg(y);\n return { x, y };\n }\n else if (length === uncomp && head === 0x04) {\n // TODO: more checks\n const L = Fp.BYTES;\n const x = Fp.fromBytes(tail.subarray(0, L));\n const y = Fp.fromBytes(tail.subarray(L, L * 2));\n if (!isValidXY(x, y))\n throw new Error('bad point: is not on curve');\n return { x, y };\n }\n else {\n throw new Error(`bad point: got length ${length}, expected compressed=${comp} or uncompressed=${uncomp}`);\n }\n }\n const encodePoint = extraOpts.toBytes || pointToBytes;\n const decodePoint = extraOpts.fromBytes || pointFromBytes;\n function weierstrassEquation(x) {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x² * x\n return Fp.add(Fp.add(x3, Fp.mul(x, CURVE.a)), CURVE.b); // x³ + a * x + b\n }\n // TODO: move top-level\n /** Checks whether equation holds for given x, y: y² == x³ + ax + b */\n function isValidXY(x, y) {\n const left = Fp.sqr(y); // y²\n const right = weierstrassEquation(x); // x³ + ax + b\n return Fp.eql(left, right);\n }\n // Validate whether the passed curve params are valid.\n // Test 1: equation y² = x³ + ax + b should work for generator point.\n if (!isValidXY(CURVE.Gx, CURVE.Gy))\n throw new Error('bad curve params: generator point');\n // Test 2: discriminant Δ part should be non-zero: 4a³ + 27b² != 0.\n // Guarantees curve is genus-1, smooth (non-singular).\n const _4a3 = Fp.mul(Fp.pow(CURVE.a, _3n), _4n);\n const _27b2 = Fp.mul(Fp.sqr(CURVE.b), BigInt(27));\n if (Fp.is0(Fp.add(_4a3, _27b2)))\n throw new Error('bad curve params: a or b');\n /** Asserts coordinate is valid: 0 <= n < Fp.ORDER. */\n function acoord(title, n, banZero = false) {\n if (!Fp.isValid(n) || (banZero && Fp.is0(n)))\n throw new Error(`bad point coordinate ${title}`);\n return n;\n }\n function aprjpoint(other) {\n if (!(other instanceof Point))\n throw new Error('ProjectivePoint expected');\n }\n function splitEndoScalarN(k) {\n if (!endo || !endo.basises)\n throw new Error('no endo');\n return _splitEndoScalar(k, endo.basises, Fn.ORDER);\n }\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (X, Y, Z) ∋ (x=X/Z, y=Y/Z)\n const toAffineMemo = memoized((p, iz) => {\n const { X, Y, Z } = p;\n // Fast-path for normalized points\n if (Fp.eql(Z, Fp.ONE))\n return { x: X, y: Y };\n const is0 = p.is0();\n // If invZ was 0, we return zero point. However we still want to execute\n // all operations, so we replace invZ with a random number, 1.\n if (iz == null)\n iz = is0 ? Fp.ONE : Fp.inv(Z);\n const x = Fp.mul(X, iz);\n const y = Fp.mul(Y, iz);\n const zz = Fp.mul(Z, iz);\n if (is0)\n return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE))\n throw new Error('invZ was invalid');\n return { x, y };\n });\n // NOTE: on exception this will crash 'cached' and no value will be set.\n // Otherwise true will be return\n const assertValidMemo = memoized((p) => {\n if (p.is0()) {\n // (0, 1, 0) aka ZERO is invalid in most contexts.\n // In BLS, ZERO can be serialized, so we allow it.\n // (0, 0, 0) is invalid representation of ZERO.\n if (extraOpts.allowInfinityPoint && !Fp.is0(p.Y))\n return;\n throw new Error('bad point: ZERO');\n }\n // Some 3rd-party test vectors require different wording between here & `fromCompressedHex`\n const { x, y } = p.toAffine();\n if (!Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('bad point: x or y not field elements');\n if (!isValidXY(x, y))\n throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree())\n throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n function finishEndo(endoBeta, k1p, k2p, k1neg, k2neg) {\n k2p = new Point(Fp.mul(k2p.X, endoBeta), k2p.Y, k2p.Z);\n k1p = negateCt(k1neg, k1p);\n k2p = negateCt(k2neg, k2p);\n return k1p.add(k2p);\n }\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates:(X, Y, Z) ∋ (x=X/Z, y=Y/Z).\n * Default Point works in 2d / affine coordinates: (x, y).\n * We're doing calculations in projective, because its operations don't require costly inversion.\n */\n class Point {\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n constructor(X, Y, Z) {\n this.X = acoord('x', X);\n this.Y = acoord('y', Y, true);\n this.Z = acoord('z', Z);\n Object.freeze(this);\n }\n static CURVE() {\n return CURVE;\n }\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n static fromAffine(p) {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y))\n throw new Error('invalid affine point');\n if (p instanceof Point)\n throw new Error('projective point not allowed');\n // (0, 0) would've produced (0, 0, 1) - instead, we need (0, 1, 0)\n if (Fp.is0(x) && Fp.is0(y))\n return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n static fromBytes(bytes) {\n const P = Point.fromAffine(decodePoint(abytes(bytes, undefined, 'point')));\n P.assertValidity();\n return P;\n }\n static fromHex(hex) {\n return Point.fromBytes(ensureBytes('pointHex', hex));\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /**\n *\n * @param windowSize\n * @param isLazy true will defer table computation until the first multiplication\n * @returns\n */\n precompute(windowSize = 8, isLazy = true) {\n wnaf.createCache(this, windowSize);\n if (!isLazy)\n this.multiply(_3n); // random number\n return this;\n }\n // TODO: return `this`\n /** A point on curve is valid if it conforms to equation. */\n assertValidity() {\n assertValidMemo(this);\n }\n hasEvenY() {\n const { y } = this.toAffine();\n if (!Fp.isOdd)\n throw new Error(\"Field doesn't support isOdd\");\n return !Fp.isOdd(y);\n }\n /** Compare one point to another. */\n equals(other) {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n const U1 = Fp.eql(Fp.mul(X1, Z2), Fp.mul(X2, Z1));\n const U2 = Fp.eql(Fp.mul(Y1, Z2), Fp.mul(Y2, Z1));\n return U1 && U2;\n }\n /** Flips point to one corresponding to (x, -y) in Affine coordinates. */\n negate() {\n return new Point(this.X, Fp.neg(this.Y), this.Z);\n }\n // Renes-Costello-Batina exception-free doubling formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 3\n // Cost: 8M + 3S + 3*a + 2*b3 + 15add.\n double() {\n const { a, b } = CURVE;\n const b3 = Fp.mul(b, _3n);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n let t0 = Fp.mul(X1, X1); // step 1\n let t1 = Fp.mul(Y1, Y1);\n let t2 = Fp.mul(Z1, Z1);\n let t3 = Fp.mul(X1, Y1);\n t3 = Fp.add(t3, t3); // step 5\n Z3 = Fp.mul(X1, Z1);\n Z3 = Fp.add(Z3, Z3);\n X3 = Fp.mul(a, Z3);\n Y3 = Fp.mul(b3, t2);\n Y3 = Fp.add(X3, Y3); // step 10\n X3 = Fp.sub(t1, Y3);\n Y3 = Fp.add(t1, Y3);\n Y3 = Fp.mul(X3, Y3);\n X3 = Fp.mul(t3, X3);\n Z3 = Fp.mul(b3, Z3); // step 15\n t2 = Fp.mul(a, t2);\n t3 = Fp.sub(t0, t2);\n t3 = Fp.mul(a, t3);\n t3 = Fp.add(t3, Z3);\n Z3 = Fp.add(t0, t0); // step 20\n t0 = Fp.add(Z3, t0);\n t0 = Fp.add(t0, t2);\n t0 = Fp.mul(t0, t3);\n Y3 = Fp.add(Y3, t0);\n t2 = Fp.mul(Y1, Z1); // step 25\n t2 = Fp.add(t2, t2);\n t0 = Fp.mul(t2, t3);\n X3 = Fp.sub(X3, t0);\n Z3 = Fp.mul(t2, t1);\n Z3 = Fp.add(Z3, Z3); // step 30\n Z3 = Fp.add(Z3, Z3);\n return new Point(X3, Y3, Z3);\n }\n // Renes-Costello-Batina exception-free addition formula.\n // There is 30% faster Jacobian formula, but it is not complete.\n // https://eprint.iacr.org/2015/1060, algorithm 1\n // Cost: 12M + 0S + 3*a + 3*b3 + 23add.\n add(other) {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n let X3 = Fp.ZERO, Y3 = Fp.ZERO, Z3 = Fp.ZERO; // prettier-ignore\n const a = CURVE.a;\n const b3 = Fp.mul(CURVE.b, _3n);\n let t0 = Fp.mul(X1, X2); // step 1\n let t1 = Fp.mul(Y1, Y2);\n let t2 = Fp.mul(Z1, Z2);\n let t3 = Fp.add(X1, Y1);\n let t4 = Fp.add(X2, Y2); // step 5\n t3 = Fp.mul(t3, t4);\n t4 = Fp.add(t0, t1);\n t3 = Fp.sub(t3, t4);\n t4 = Fp.add(X1, Z1);\n let t5 = Fp.add(X2, Z2); // step 10\n t4 = Fp.mul(t4, t5);\n t5 = Fp.add(t0, t2);\n t4 = Fp.sub(t4, t5);\n t5 = Fp.add(Y1, Z1);\n X3 = Fp.add(Y2, Z2); // step 15\n t5 = Fp.mul(t5, X3);\n X3 = Fp.add(t1, t2);\n t5 = Fp.sub(t5, X3);\n Z3 = Fp.mul(a, t4);\n X3 = Fp.mul(b3, t2); // step 20\n Z3 = Fp.add(X3, Z3);\n X3 = Fp.sub(t1, Z3);\n Z3 = Fp.add(t1, Z3);\n Y3 = Fp.mul(X3, Z3);\n t1 = Fp.add(t0, t0); // step 25\n t1 = Fp.add(t1, t0);\n t2 = Fp.mul(a, t2);\n t4 = Fp.mul(b3, t4);\n t1 = Fp.add(t1, t2);\n t2 = Fp.sub(t0, t2); // step 30\n t2 = Fp.mul(a, t2);\n t4 = Fp.add(t4, t2);\n t0 = Fp.mul(t1, t4);\n Y3 = Fp.add(Y3, t0);\n t0 = Fp.mul(t5, t4); // step 35\n X3 = Fp.mul(t3, X3);\n X3 = Fp.sub(X3, t0);\n t0 = Fp.mul(t3, t1);\n Z3 = Fp.mul(t5, Z3);\n Z3 = Fp.add(Z3, t0); // step 40\n return new Point(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n is0() {\n return this.equals(Point.ZERO);\n }\n /**\n * Constant time multiplication.\n * Uses wNAF method. Windowed method may be 10% faster,\n * but takes 2x longer to generate and consumes 2x memory.\n * Uses precomputes when available.\n * Uses endomorphism for Koblitz curves.\n * @param scalar by which the point would be multiplied\n * @returns New point\n */\n multiply(scalar) {\n const { endo } = extraOpts;\n if (!Fn.isValidNot0(scalar))\n throw new Error('invalid scalar: out of range'); // 0 is invalid\n let point, fake; // Fake point is used to const-time mult\n const mul = (n) => wnaf.cached(this, n, (p) => normalizeZ(Point, p));\n /** See docs for {@link EndomorphismOpts} */\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(scalar);\n const { p: k1p, f: k1f } = mul(k1);\n const { p: k2p, f: k2f } = mul(k2);\n fake = k1f.add(k2f);\n point = finishEndo(endo.beta, k1p, k2p, k1neg, k2neg);\n }\n else {\n const { p, f } = mul(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return normalizeZ(Point, [point, fake])[0];\n }\n /**\n * Non-constant-time multiplication. Uses double-and-add algorithm.\n * It's faster, but should only be used when you don't care about\n * an exposed secret key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc) {\n const { endo } = extraOpts;\n const p = this;\n if (!Fn.isValid(sc))\n throw new Error('invalid scalar: out of range'); // 0 is valid\n if (sc === _0n || p.is0())\n return Point.ZERO;\n if (sc === _1n)\n return p; // fast-path\n if (wnaf.hasCache(this))\n return this.multiply(sc);\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(sc);\n const { p1, p2 } = mulEndoUnsafe(Point, p, k1, k2); // 30% faster vs wnaf.unsafe\n return finishEndo(endo.beta, p1, p2, k1neg, k2neg);\n }\n else {\n return wnaf.unsafe(p, sc);\n }\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const sum = this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b));\n return sum.is0() ? undefined : sum;\n }\n /**\n * Converts Projective point to affine (x, y) coordinates.\n * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch\n */\n toAffine(invertedZ) {\n return toAffineMemo(this, invertedZ);\n }\n /**\n * Checks whether Point is free of torsion elements (is in prime subgroup).\n * Always torsion-free for cofactor=1 curves.\n */\n isTorsionFree() {\n const { isTorsionFree } = extraOpts;\n if (cofactor === _1n)\n return true;\n if (isTorsionFree)\n return isTorsionFree(Point, this);\n return wnaf.unsafe(this, CURVE_ORDER).is0();\n }\n clearCofactor() {\n const { clearCofactor } = extraOpts;\n if (cofactor === _1n)\n return this; // Fast-path\n if (clearCofactor)\n return clearCofactor(Point, this);\n return this.multiplyUnsafe(cofactor);\n }\n isSmallOrder() {\n // can we use this.clearCofactor()?\n return this.multiplyUnsafe(cofactor).is0();\n }\n toBytes(isCompressed = true) {\n abool(isCompressed, 'isCompressed');\n this.assertValidity();\n return encodePoint(Point, this, isCompressed);\n }\n toHex(isCompressed = true) {\n return bytesToHex(this.toBytes(isCompressed));\n }\n toString() {\n return `<Point ${this.is0() ? 'ZERO' : this.toHex()}>`;\n }\n // TODO: remove\n get px() {\n return this.X;\n }\n get py() {\n return this.X;\n }\n get pz() {\n return this.Z;\n }\n toRawBytes(isCompressed = true) {\n return this.toBytes(isCompressed);\n }\n _setWindowSize(windowSize) {\n this.precompute(windowSize);\n }\n static normalizeZ(points) {\n return normalizeZ(Point, points);\n }\n static msm(points, scalars) {\n return pippenger(Point, Fn, points, scalars);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(_normFnElement(Fn, privateKey));\n }\n }\n // base / generator point\n Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n // zero / infinity / identity point\n Point.ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0\n // math field\n Point.Fp = Fp;\n // scalar field\n Point.Fn = Fn;\n const bits = Fn.BITS;\n const wnaf = new wNAF(Point, extraOpts.endo ? Math.ceil(bits / 2) : bits);\n Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n return Point;\n}\n// Points start with byte 0x02 when y is even; otherwise 0x03\nfunction pprefix(hasEvenY) {\n return Uint8Array.of(hasEvenY ? 0x02 : 0x03);\n}\n/**\n * Implementation of the Shallue and van de Woestijne method for any weierstrass curve.\n * TODO: check if there is a way to merge this with uvRatio in Edwards; move to modular.\n * b = True and y = sqrt(u / v) if (u / v) is square in F, and\n * b = False and y = sqrt(Z * (u / v)) otherwise.\n * @param Fp\n * @param Z\n * @returns\n */\nexport function SWUFpSqrtRatio(Fp, Z) {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n)\n l += _1n;\n const c1 = l; // 1. c1, the largest integer such that 2^c1 divides q - 1.\n // We need 2n ** c1 and 2n ** (c1-1). We can't use **; but we can use <<.\n // 2n ** c1 == 2n << (c1-1)\n const _2n_pow_c1_1 = _2n << (c1 - _1n - _1n);\n const _2n_pow_c1 = _2n_pow_c1_1 * _2n;\n const c2 = (q - _1n) / _2n_pow_c1; // 2. c2 = (q - 1) / (2^c1) # Integer arithmetic\n const c3 = (c2 - _1n) / _2n; // 3. c3 = (c2 - 1) / 2 # Integer arithmetic\n const c4 = _2n_pow_c1 - _1n; // 4. c4 = 2^c1 - 1 # Integer arithmetic\n const c5 = _2n_pow_c1_1; // 5. c5 = 2^(c1 - 1) # Integer arithmetic\n const c6 = Fp.pow(Z, c2); // 6. c6 = Z^c2\n const c7 = Fp.pow(Z, (c2 + _1n) / _2n); // 7. c7 = Z^((c2 + 1) / 2)\n let sqrtRatio = (u, v) => {\n let tv1 = c6; // 1. tv1 = c6\n let tv2 = Fp.pow(v, c4); // 2. tv2 = v^c4\n let tv3 = Fp.sqr(tv2); // 3. tv3 = tv2^2\n tv3 = Fp.mul(tv3, v); // 4. tv3 = tv3 * v\n let tv5 = Fp.mul(u, tv3); // 5. tv5 = u * tv3\n tv5 = Fp.pow(tv5, c3); // 6. tv5 = tv5^c3\n tv5 = Fp.mul(tv5, tv2); // 7. tv5 = tv5 * tv2\n tv2 = Fp.mul(tv5, v); // 8. tv2 = tv5 * v\n tv3 = Fp.mul(tv5, u); // 9. tv3 = tv5 * u\n let tv4 = Fp.mul(tv3, tv2); // 10. tv4 = tv3 * tv2\n tv5 = Fp.pow(tv4, c5); // 11. tv5 = tv4^c5\n let isQR = Fp.eql(tv5, Fp.ONE); // 12. isQR = tv5 == 1\n tv2 = Fp.mul(tv3, c7); // 13. tv2 = tv3 * c7\n tv5 = Fp.mul(tv4, tv1); // 14. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, isQR); // 15. tv3 = CMOV(tv2, tv3, isQR)\n tv4 = Fp.cmov(tv5, tv4, isQR); // 16. tv4 = CMOV(tv5, tv4, isQR)\n // 17. for i in (c1, c1 - 1, ..., 2):\n for (let i = c1; i > _1n; i--) {\n let tv5 = i - _2n; // 18. tv5 = i - 2\n tv5 = _2n << (tv5 - _1n); // 19. tv5 = 2^tv5\n let tvv5 = Fp.pow(tv4, tv5); // 20. tv5 = tv4^tv5\n const e1 = Fp.eql(tvv5, Fp.ONE); // 21. e1 = tv5 == 1\n tv2 = Fp.mul(tv3, tv1); // 22. tv2 = tv3 * tv1\n tv1 = Fp.mul(tv1, tv1); // 23. tv1 = tv1 * tv1\n tvv5 = Fp.mul(tv4, tv1); // 24. tv5 = tv4 * tv1\n tv3 = Fp.cmov(tv2, tv3, e1); // 25. tv3 = CMOV(tv2, tv3, e1)\n tv4 = Fp.cmov(tvv5, tv4, e1); // 26. tv4 = CMOV(tv5, tv4, e1)\n }\n return { isValid: isQR, value: tv3 };\n };\n if (Fp.ORDER % _4n === _3n) {\n // sqrt_ratio_3mod4(u, v)\n const c1 = (Fp.ORDER - _3n) / _4n; // 1. c1 = (q - 3) / 4 # Integer arithmetic\n const c2 = Fp.sqrt(Fp.neg(Z)); // 2. c2 = sqrt(-Z)\n sqrtRatio = (u, v) => {\n let tv1 = Fp.sqr(v); // 1. tv1 = v^2\n const tv2 = Fp.mul(u, v); // 2. tv2 = u * v\n tv1 = Fp.mul(tv1, tv2); // 3. tv1 = tv1 * tv2\n let y1 = Fp.pow(tv1, c1); // 4. y1 = tv1^c1\n y1 = Fp.mul(y1, tv2); // 5. y1 = y1 * tv2\n const y2 = Fp.mul(y1, c2); // 6. y2 = y1 * c2\n const tv3 = Fp.mul(Fp.sqr(y1), v); // 7. tv3 = y1^2; 8. tv3 = tv3 * v\n const isQR = Fp.eql(tv3, u); // 9. isQR = tv3 == u\n let y = Fp.cmov(y2, y1, isQR); // 10. y = CMOV(y2, y1, isQR)\n return { isValid: isQR, value: y }; // 11. return (isQR, y) isQR ? y : y*c2\n };\n }\n // No curves uses that\n // if (Fp.ORDER % _8n === _5n) // sqrt_ratio_5mod8\n return sqrtRatio;\n}\n/**\n * Simplified Shallue-van de Woestijne-Ulas Method\n * https://www.rfc-editor.org/rfc/rfc9380#section-6.6.2\n */\nexport function mapToCurveSimpleSWU(Fp, opts) {\n validateField(Fp);\n const { A, B, Z } = opts;\n if (!Fp.isValid(A) || !Fp.isValid(B) || !Fp.isValid(Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, Z);\n if (!Fp.isOdd)\n throw new Error('Field does not have .isOdd()');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u) => {\n // prettier-ignore\n let tv1, tv2, tv3, tv4, tv5, tv6, x, y;\n tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, Z); // 2. tv1 = Z * tv1\n tv2 = Fp.sqr(tv1); // 3. tv2 = tv1^2\n tv2 = Fp.add(tv2, tv1); // 4. tv2 = tv2 + tv1\n tv3 = Fp.add(tv2, Fp.ONE); // 5. tv3 = tv2 + 1\n tv3 = Fp.mul(tv3, B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, A); // 8. tv4 = A * tv4\n tv2 = Fp.sqr(tv3); // 9. tv2 = tv3^2\n tv6 = Fp.sqr(tv4); // 10. tv6 = tv4^2\n tv5 = Fp.mul(tv6, A); // 11. tv5 = A * tv6\n tv2 = Fp.add(tv2, tv5); // 12. tv2 = tv2 + tv5\n tv2 = Fp.mul(tv2, tv3); // 13. tv2 = tv2 * tv3\n tv6 = Fp.mul(tv6, tv4); // 14. tv6 = tv6 * tv4\n tv5 = Fp.mul(tv6, B); // 15. tv5 = B * tv6\n tv2 = Fp.add(tv2, tv5); // 16. tv2 = tv2 + tv5\n x = Fp.mul(tv1, tv3); // 17. x = tv1 * tv3\n const { isValid, value } = sqrtRatio(tv2, tv6); // 18. (is_gx1_square, y1) = sqrt_ratio(tv2, tv6)\n y = Fp.mul(tv1, u); // 19. y = tv1 * u -> Z * u^3 * y1\n y = Fp.mul(y, value); // 20. y = y * y1\n x = Fp.cmov(x, tv3, isValid); // 21. x = CMOV(x, tv3, is_gx1_square)\n y = Fp.cmov(y, value, isValid); // 22. y = CMOV(y, y1, is_gx1_square)\n const e1 = Fp.isOdd(u) === Fp.isOdd(y); // 23. e1 = sgn0(u) == sgn0(y)\n y = Fp.cmov(Fp.neg(y), y, e1); // 24. y = CMOV(-y, y, e1)\n const tv4_inv = FpInvertBatch(Fp, [tv4], true)[0];\n x = Fp.mul(x, tv4_inv); // 25. x = x / tv4\n return { x, y };\n };\n}\nfunction getWLengths(Fp, Fn) {\n return {\n secretKey: Fn.BYTES,\n publicKey: 1 + Fp.BYTES,\n publicKeyUncompressed: 1 + 2 * Fp.BYTES,\n publicKeyHasPrefix: true,\n signature: 2 * Fn.BYTES,\n };\n}\n/**\n * Sometimes users only need getPublicKey, getSharedSecret, and secret key handling.\n * This helper ensures no signature functionality is present. Less code, smaller bundle size.\n */\nexport function ecdh(Point, ecdhOpts = {}) {\n const { Fn } = Point;\n const randomBytes_ = ecdhOpts.randomBytes || randomBytesWeb;\n const lengths = Object.assign(getWLengths(Point.Fp, Fn), { seed: getMinHashLength(Fn.ORDER) });\n function isValidSecretKey(secretKey) {\n try {\n return !!_normFnElement(Fn, secretKey);\n }\n catch (error) {\n return false;\n }\n }\n function isValidPublicKey(publicKey, isCompressed) {\n const { publicKey: comp, publicKeyUncompressed } = lengths;\n try {\n const l = publicKey.length;\n if (isCompressed === true && l !== comp)\n return false;\n if (isCompressed === false && l !== publicKeyUncompressed)\n return false;\n return !!Point.fromBytes(publicKey);\n }\n catch (error) {\n return false;\n }\n }\n /**\n * Produces cryptographically secure secret key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n function randomSecretKey(seed = randomBytes_(lengths.seed)) {\n return mapHashToField(abytes(seed, lengths.seed, 'seed'), Fn.ORDER);\n }\n /**\n * Computes public key for a secret key. Checks for validity of the secret key.\n * @param isCompressed whether to return compact (default), or full key\n * @returns Public key, full when isCompressed=false; short when isCompressed=true\n */\n function getPublicKey(secretKey, isCompressed = true) {\n return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed);\n }\n function keygen(seed) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: getPublicKey(secretKey) };\n }\n /**\n * Quick and dirty check for item being public key. Does not validate hex, or being on-curve.\n */\n function isProbPub(item) {\n if (typeof item === 'bigint')\n return false;\n if (item instanceof Point)\n return true;\n const { secretKey, publicKey, publicKeyUncompressed } = lengths;\n if (Fn.allowedLengths || secretKey === publicKey)\n return undefined;\n const l = ensureBytes('key', item).length;\n return l === publicKey || l === publicKeyUncompressed;\n }\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from secret key A and public key B.\n * Checks: 1) secret key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(secretKeyA, publicKeyB, isCompressed = true) {\n if (isProbPub(secretKeyA) === true)\n throw new Error('first arg must be private key');\n if (isProbPub(publicKeyB) === false)\n throw new Error('second arg must be public key');\n const s = _normFnElement(Fn, secretKeyA);\n const b = Point.fromHex(publicKeyB); // checks for being on-curve\n return b.multiply(s).toBytes(isCompressed);\n }\n const utils = {\n isValidSecretKey,\n isValidPublicKey,\n randomSecretKey,\n // TODO: remove\n isValidPrivateKey: isValidSecretKey,\n randomPrivateKey: randomSecretKey,\n normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),\n precompute(windowSize = 8, point = Point.BASE) {\n return point.precompute(windowSize, false);\n },\n };\n return Object.freeze({ getPublicKey, getSharedSecret, keygen, Point, utils, lengths });\n}\n/**\n * Creates ECDSA signing interface for given elliptic curve `Point` and `hash` function.\n * We need `hash` for 2 features:\n * 1. Message prehash-ing. NOT used if `sign` / `verify` are called with `prehash: false`\n * 2. k generation in `sign`, using HMAC-drbg(hash)\n *\n * ECDSAOpts are only rarely needed.\n *\n * @example\n * ```js\n * const p256_Point = weierstrass(...);\n * const p256_sha256 = ecdsa(p256_Point, sha256);\n * const p256_sha224 = ecdsa(p256_Point, sha224);\n * const p256_sha224_r = ecdsa(p256_Point, sha224, { randomBytes: (length) => { ... } });\n * ```\n */\nexport function ecdsa(Point, hash, ecdsaOpts = {}) {\n ahash(hash);\n _validateObject(ecdsaOpts, {}, {\n hmac: 'function',\n lowS: 'boolean',\n randomBytes: 'function',\n bits2int: 'function',\n bits2int_modN: 'function',\n });\n const randomBytes = ecdsaOpts.randomBytes || randomBytesWeb;\n const hmac = ecdsaOpts.hmac ||\n ((key, ...msgs) => nobleHmac(hash, key, concatBytes(...msgs)));\n const { Fp, Fn } = Point;\n const { ORDER: CURVE_ORDER, BITS: fnBits } = Fn;\n const { keygen, getPublicKey, getSharedSecret, utils, lengths } = ecdh(Point, ecdsaOpts);\n const defaultSigOpts = {\n prehash: false,\n lowS: typeof ecdsaOpts.lowS === 'boolean' ? ecdsaOpts.lowS : false,\n format: undefined, //'compact' as ECDSASigFormat,\n extraEntropy: false,\n };\n const defaultSigOpts_format = 'compact';\n function isBiggerThanHalfOrder(number) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function validateRS(title, num) {\n if (!Fn.isValidNot0(num))\n throw new Error(`invalid signature ${title}: out of range 1..Point.Fn.ORDER`);\n return num;\n }\n function validateSigLength(bytes, format) {\n validateSigFormat(format);\n const size = lengths.signature;\n const sizer = format === 'compact' ? size : format === 'recovered' ? size + 1 : undefined;\n return abytes(bytes, sizer, `${format} signature`);\n }\n /**\n * ECDSA signature with its (r, s) properties. Supports compact, recovered & DER representations.\n */\n class Signature {\n constructor(r, s, recovery) {\n this.r = validateRS('r', r); // r in [1..N-1];\n this.s = validateRS('s', s); // s in [1..N-1];\n if (recovery != null)\n this.recovery = recovery;\n Object.freeze(this);\n }\n static fromBytes(bytes, format = defaultSigOpts_format) {\n validateSigLength(bytes, format);\n let recid;\n if (format === 'der') {\n const { r, s } = DER.toSig(abytes(bytes));\n return new Signature(r, s);\n }\n if (format === 'recovered') {\n recid = bytes[0];\n format = 'compact';\n bytes = bytes.subarray(1);\n }\n const L = Fn.BYTES;\n const r = bytes.subarray(0, L);\n const s = bytes.subarray(L, L * 2);\n return new Signature(Fn.fromBytes(r), Fn.fromBytes(s), recid);\n }\n static fromHex(hex, format) {\n return this.fromBytes(hexToBytes(hex), format);\n }\n addRecoveryBit(recovery) {\n return new Signature(this.r, this.s, recovery);\n }\n recoverPublicKey(messageHash) {\n const FIELD_ORDER = Fp.ORDER;\n const { r, s, recovery: rec } = this;\n if (rec == null || ![0, 1, 2, 3].includes(rec))\n throw new Error('recovery id invalid');\n // ECDSA recovery is hard for cofactor > 1 curves.\n // In sign, `r = q.x mod n`, and here we recover q.x from r.\n // While recovering q.x >= n, we need to add r+n for cofactor=1 curves.\n // However, for cofactor>1, r+n may not get q.x:\n // r+n*i would need to be done instead where i is unknown.\n // To easily get i, we either need to:\n // a. increase amount of valid recid values (4, 5...); OR\n // b. prohibit non-prime-order signatures (recid > 1).\n const hasCofactor = CURVE_ORDER * _2n < FIELD_ORDER;\n if (hasCofactor && rec > 1)\n throw new Error('recovery id is ambiguous for h>1 curve');\n const radj = rec === 2 || rec === 3 ? r + CURVE_ORDER : r;\n if (!Fp.isValid(radj))\n throw new Error('recovery id 2 or 3 invalid');\n const x = Fp.toBytes(radj);\n const R = Point.fromBytes(concatBytes(pprefix((rec & 1) === 0), x));\n const ir = Fn.inv(radj); // r^-1\n const h = bits2int_modN(ensureBytes('msgHash', messageHash)); // Truncate hash\n const u1 = Fn.create(-h * ir); // -hr^-1\n const u2 = Fn.create(s * ir); // sr^-1\n // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1). unsafe is fine: there is no private data.\n const Q = Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2));\n if (Q.is0())\n throw new Error('point at infinify');\n Q.assertValidity();\n return Q;\n }\n // Signatures should be low-s, to prevent malleability.\n hasHighS() {\n return isBiggerThanHalfOrder(this.s);\n }\n toBytes(format = defaultSigOpts_format) {\n validateSigFormat(format);\n if (format === 'der')\n return hexToBytes(DER.hexFromSig(this));\n const r = Fn.toBytes(this.r);\n const s = Fn.toBytes(this.s);\n if (format === 'recovered') {\n if (this.recovery == null)\n throw new Error('recovery bit must be present');\n return concatBytes(Uint8Array.of(this.recovery), r, s);\n }\n return concatBytes(r, s);\n }\n toHex(format) {\n return bytesToHex(this.toBytes(format));\n }\n // TODO: remove\n assertValidity() { }\n static fromCompact(hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'compact');\n }\n static fromDER(hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'der');\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, Fn.neg(this.s), this.recovery) : this;\n }\n toDERRawBytes() {\n return this.toBytes('der');\n }\n toDERHex() {\n return bytesToHex(this.toBytes('der'));\n }\n toCompactRawBytes() {\n return this.toBytes('compact');\n }\n toCompactHex() {\n return bytesToHex(this.toBytes('compact'));\n }\n }\n // RFC6979: ensure ECDSA msg is X bytes and < N. RFC suggests optional truncating via bits2octets.\n // FIPS 186-4 4.6 suggests the leftmost min(nBitLen, outLen) bits, which matches bits2int.\n // bits2int can produce res>N, we can do mod(res, N) since the bitLen is the same.\n // int2octets can't be used; pads small msgs with 0: unacceptatble for trunc as per RFC vectors\n const bits2int = ecdsaOpts.bits2int ||\n function bits2int_def(bytes) {\n // Our custom check \"just in case\", for protection against DoS\n if (bytes.length > 8192)\n throw new Error('input is too large');\n // For curves with nBitLength % 8 !== 0: bits2octets(bits2octets(m)) !== bits2octets(m)\n // for some cases, since bytes.length * 8 is not actual bitLength.\n const num = bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - fnBits; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN = ecdsaOpts.bits2int_modN ||\n function bits2int_modN_def(bytes) {\n return Fn.create(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // Pads output with zero as per spec\n const ORDER_MASK = bitMask(fnBits);\n /** Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`. */\n function int2octets(num) {\n // IMPORTANT: the check ensures working for case `Fn.BYTES != Fn.BITS * 8`\n aInRange('num < 2^' + fnBits, num, _0n, ORDER_MASK);\n return Fn.toBytes(num);\n }\n function validateMsgAndHash(message, prehash) {\n abytes(message, undefined, 'message');\n return prehash ? abytes(hash(message), undefined, 'prehashed message') : message;\n }\n /**\n * Steps A, D of RFC6979 3.2.\n * Creates RFC6979 seed; converts msg/privKey to numbers.\n * Used only in sign, not in verify.\n *\n * Warning: we cannot assume here that message has same amount of bytes as curve order,\n * this will be invalid at least for P521. Also it can be bigger for P224 + SHA256.\n */\n function prepSig(message, privateKey, opts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { lowS, prehash, extraEntropy } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash); // RFC6979 3.2 A: h1 = H(m)\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with fnBits % 8 !== 0. Because of that, we unwrap it here as int2octets call.\n // const bits2octets = (bits) => int2octets(bits2int_modN(bits))\n const h1int = bits2int_modN(message);\n const d = _normFnElement(Fn, privateKey); // validate secret key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (extraEntropy != null && extraEntropy !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n // gen random bytes OR pass as-is\n const e = extraEntropy === true ? randomBytes(lengths.secretKey) : extraEntropy;\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = concatBytes(...seedArgs); // Step D of RFC6979 3.2\n const m = h1int; // NOTE: no need to call bits2int second time here, it is inside truncateHash!\n // Converts signature params into point w r/s, checks result for validity.\n // To transform k => Signature:\n // q = k⋅G\n // r = q.x mod n\n // s = k^-1(m + rd) mod n\n // Can use scalar blinding b^-1(bm + bdr) where b ∈ [1,q−1] according to\n // https://tches.iacr.org/index.php/TCHES/article/view/7337/6509. We've decided against it:\n // a) dependency on CSPRNG b) 15% slowdown c) doesn't really help since bigints are not CT\n function k2sig(kBytes) {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n // Important: all mod() calls here must be done over N\n const k = bits2int(kBytes); // mod n, not mod p\n if (!Fn.isValidNot0(k))\n return; // Valid scalars (including k) must be in 1..N-1\n const ik = Fn.inv(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = k⋅G\n const r = Fn.create(q.x); // r = q.x mod n\n if (r === _0n)\n return;\n const s = Fn.create(ik * Fn.create(m + r * d)); // Not using blinding here, see comment above\n if (s === _0n)\n return;\n let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n); // recovery bit (2 or 3, when q.x > n)\n let normS = s;\n if (lowS && isBiggerThanHalfOrder(s)) {\n normS = Fn.neg(s); // if lowS was passed, ensure s is always\n recovery ^= 1; // // in the bottom half of N\n }\n return new Signature(r, normS, recovery); // use normS, not s\n }\n return { seed, k2sig };\n }\n /**\n * Signs message hash with a secret key.\n *\n * ```\n * sign(m, d) where\n * k = rfc6979_hmac_drbg(m, d)\n * (x, y) = G × k\n * r = x mod n\n * s = (m + dr) / k mod n\n * ```\n */\n function sign(message, secretKey, opts = {}) {\n message = ensureBytes('message', message);\n const { seed, k2sig } = prepSig(message, secretKey, opts); // Steps A, D of RFC6979 3.2.\n const drbg = createHmacDrbg(hash.outputLen, Fn.BYTES, hmac);\n const sig = drbg(seed, k2sig); // Steps B, C, D, E, F, G\n return sig;\n }\n function tryParsingSig(sg) {\n // Try to deduce format\n let sig = undefined;\n const isHex = typeof sg === 'string' || isBytes(sg);\n const isObj = !isHex &&\n sg !== null &&\n typeof sg === 'object' &&\n typeof sg.r === 'bigint' &&\n typeof sg.s === 'bigint';\n if (!isHex && !isObj)\n throw new Error('invalid signature, expected Uint8Array, hex string or Signature instance');\n if (isObj) {\n sig = new Signature(sg.r, sg.s);\n }\n else if (isHex) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'der');\n }\n catch (derError) {\n if (!(derError instanceof DER.Err))\n throw derError;\n }\n if (!sig) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'compact');\n }\n catch (error) {\n return false;\n }\n }\n }\n if (!sig)\n return false;\n return sig;\n }\n /**\n * Verifies a signature against message and public key.\n * Rejects lowS signatures by default: see {@link ECDSAVerifyOpts}.\n * Implements section 4.1.4 from https://www.secg.org/sec1-v2.pdf:\n *\n * ```\n * verify(r, s, h, P) where\n * u1 = hs^-1 mod n\n * u2 = rs^-1 mod n\n * R = u1⋅G + u2⋅P\n * mod(R.x, n) == r\n * ```\n */\n function verify(signature, message, publicKey, opts = {}) {\n const { lowS, prehash, format } = validateSigOpts(opts, defaultSigOpts);\n publicKey = ensureBytes('publicKey', publicKey);\n message = validateMsgAndHash(ensureBytes('message', message), prehash);\n if ('strict' in opts)\n throw new Error('options.strict was renamed to lowS');\n const sig = format === undefined\n ? tryParsingSig(signature)\n : Signature.fromBytes(ensureBytes('sig', signature), format);\n if (sig === false)\n return false;\n try {\n const P = Point.fromBytes(publicKey);\n if (lowS && sig.hasHighS())\n return false;\n const { r, s } = sig;\n const h = bits2int_modN(message); // mod n, not mod p\n const is = Fn.inv(s); // s^-1 mod n\n const u1 = Fn.create(h * is); // u1 = hs^-1 mod n\n const u2 = Fn.create(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyUnsafe(u1).add(P.multiplyUnsafe(u2)); // u1⋅G + u2⋅P\n if (R.is0())\n return false;\n const v = Fn.create(R.x); // v = r.x mod n\n return v === r;\n }\n catch (e) {\n return false;\n }\n }\n function recoverPublicKey(signature, message, opts = {}) {\n const { prehash } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash);\n return Signature.fromBytes(signature, 'recovered').recoverPublicKey(message).toBytes();\n }\n return Object.freeze({\n keygen,\n getPublicKey,\n getSharedSecret,\n utils,\n lengths,\n Point,\n sign,\n verify,\n recoverPublicKey,\n Signature,\n hash,\n });\n}\n/** @deprecated use `weierstrass` in newer releases */\nexport function weierstrassPoints(c) {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n return _weierstrass_new_output_to_legacy(c, Point);\n}\nfunction _weierstrass_legacy_opts_to_new(c) {\n const CURVE = {\n a: c.a,\n b: c.b,\n p: c.Fp.ORDER,\n n: c.n,\n h: c.h,\n Gx: c.Gx,\n Gy: c.Gy,\n };\n const Fp = c.Fp;\n let allowedLengths = c.allowedPrivateKeyLengths\n ? Array.from(new Set(c.allowedPrivateKeyLengths.map((l) => Math.ceil(l / 2))))\n : undefined;\n const Fn = Field(CURVE.n, {\n BITS: c.nBitLength,\n allowedLengths: allowedLengths,\n modFromBytes: c.wrapPrivateKey,\n });\n const curveOpts = {\n Fp,\n Fn,\n allowInfinityPoint: c.allowInfinityPoint,\n endo: c.endo,\n isTorsionFree: c.isTorsionFree,\n clearCofactor: c.clearCofactor,\n fromBytes: c.fromBytes,\n toBytes: c.toBytes,\n };\n return { CURVE, curveOpts };\n}\nfunction _ecdsa_legacy_opts_to_new(c) {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const ecdsaOpts = {\n hmac: c.hmac,\n randomBytes: c.randomBytes,\n lowS: c.lowS,\n bits2int: c.bits2int,\n bits2int_modN: c.bits2int_modN,\n };\n return { CURVE, curveOpts, hash: c.hash, ecdsaOpts };\n}\nexport function _legacyHelperEquat(Fp, a, b) {\n /**\n * y² = x³ + ax + b: Short weierstrass curve formula. Takes x, returns y².\n * @returns y²\n */\n function weierstrassEquation(x) {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x² * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x³ + a * x + b\n }\n return weierstrassEquation;\n}\nfunction _weierstrass_new_output_to_legacy(c, Point) {\n const { Fp, Fn } = Point;\n function isWithinCurveOrder(num) {\n return inRange(num, _1n, Fn.ORDER);\n }\n const weierstrassEquation = _legacyHelperEquat(Fp, c.a, c.b);\n return Object.assign({}, {\n CURVE: c,\n Point: Point,\n ProjectivePoint: Point,\n normPrivateKeyToScalar: (key) => _normFnElement(Fn, key),\n weierstrassEquation,\n isWithinCurveOrder,\n });\n}\nfunction _ecdsa_new_output_to_legacy(c, _ecdsa) {\n const Point = _ecdsa.Point;\n return Object.assign({}, _ecdsa, {\n ProjectivePoint: Point,\n CURVE: Object.assign({}, c, nLength(Point.Fn.ORDER, Point.Fn.BITS)),\n });\n}\n// _ecdsa_legacy\nexport function weierstrass(c) {\n const { CURVE, curveOpts, hash, ecdsaOpts } = _ecdsa_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n const signs = ecdsa(Point, hash, ecdsaOpts);\n return _ecdsa_new_output_to_legacy(c, signs);\n}\n//# sourceMappingURL=weierstrass.js.map","/**\n * Utilities for short weierstrass curves, combined with noble-hashes.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { weierstrass } from \"./abstract/weierstrass.js\";\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash) {\n return { hash };\n}\n/** @deprecated use new `weierstrass()` and `ecdsa()` methods */\nexport function createCurve(curveDef, defHash) {\n const create = (hash) => weierstrass({ ...curveDef, hash: hash });\n return { ...create(defHash), create };\n}\n//# sourceMappingURL=_shortw_utils.js.map","import { _validateObject, abytes, bytesToNumberBE, concatBytes, isBytes, isHash, utf8ToBytes, } from \"../utils.js\";\nimport { FpInvertBatch, mod } from \"./modular.js\";\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value, length) {\n anum(value);\n anum(length);\n if (value < 0 || value >= 1 << (8 * length))\n throw new Error('invalid I2OSP input: ' + value);\n const res = Array.from({ length }).fill(0);\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\nfunction strxor(a, b) {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\nfunction anum(item) {\n if (!Number.isSafeInteger(item))\n throw new Error('number expected');\n}\nfunction normDST(DST) {\n if (!isBytes(DST) && typeof DST !== 'string')\n throw new Error('DST must be Uint8Array or string');\n return typeof DST === 'string' ? utf8ToBytes(DST) : DST;\n}\n/**\n * Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.\n * [RFC 9380 5.3.1](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1).\n */\nexport function expand_message_xmd(msg, DST, lenInBytes, H) {\n abytes(msg);\n anum(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255)\n DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (lenInBytes > 65535 || ell > 255)\n throw new Error('expand_message_xmd: invalid lenInBytes');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n/**\n * Produces a uniformly random byte string using an extendable-output function (XOF) H.\n * 1. The collision resistance of H MUST be at least k bits.\n * 2. H MUST be an XOF that has been proved indifferentiable from\n * a random oracle under a reasonable cryptographic assumption.\n * [RFC 9380 5.3.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2).\n */\nexport function expand_message_xof(msg, DST, lenInBytes, k, H) {\n abytes(msg);\n anum(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest());\n}\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * [RFC 9380 5.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.2).\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg, count, options) {\n _validateObject(options, {\n p: 'bigint',\n m: 'number',\n k: 'number',\n hash: 'function',\n });\n const { p, k, m, hash, expand, DST } = options;\n if (!isHash(options.hash))\n throw new Error('expected valid hash');\n abytes(msg);\n anum(count);\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n }\n else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n }\n else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n }\n else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\nexport function isogenyMap(field, map) {\n // Make same order as in spec\n const coeff = map.map((i) => Array.from(i).reverse());\n return (x, y) => {\n const [xn, xd, yn, yd] = coeff.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i)));\n // 6.6.3\n // Exceptional cases of iso_map are inputs that cause the denominator of\n // either rational function to evaluate to zero; such cases MUST return\n // the identity point on E.\n const [xd_inv, yd_inv] = FpInvertBatch(field, [xd, yd], true);\n x = field.mul(xn, xd_inv); // xNum / xDen\n y = field.mul(y, field.mul(yn, yd_inv)); // y * (yNum / yDev)\n return { x, y };\n };\n}\nexport const _DST_scalar = utf8ToBytes('HashToScalar-');\n/** Creates hash-to-curve methods from EC Point and mapToCurve function. See {@link H2CHasher}. */\nexport function createHasher(Point, mapToCurve, defaults) {\n if (typeof mapToCurve !== 'function')\n throw new Error('mapToCurve() must be defined');\n function map(num) {\n return Point.fromAffine(mapToCurve(num));\n }\n function clear(initial) {\n const P = initial.clearCofactor();\n if (P.equals(Point.ZERO))\n return Point.ZERO; // zero will throw in assert\n P.assertValidity();\n return P;\n }\n return {\n defaults,\n hashToCurve(msg, options) {\n const opts = Object.assign({}, defaults, options);\n const u = hash_to_field(msg, 2, opts);\n const u0 = map(u[0]);\n const u1 = map(u[1]);\n return clear(u0.add(u1));\n },\n encodeToCurve(msg, options) {\n const optsDst = defaults.encodeDST ? { DST: defaults.encodeDST } : {};\n const opts = Object.assign({}, defaults, optsDst, options);\n const u = hash_to_field(msg, 1, opts);\n const u0 = map(u[0]);\n return clear(u0);\n },\n /** See {@link H2CHasher} */\n mapToCurve(scalars) {\n if (!Array.isArray(scalars))\n throw new Error('expected array of bigints');\n for (const i of scalars)\n if (typeof i !== 'bigint')\n throw new Error('expected array of bigints');\n return clear(map(scalars));\n },\n // hash_to_scalar can produce 0: https://www.rfc-editor.org/errata/eid8393\n // RFC 9380, draft-irtf-cfrg-bbs-signatures-08\n hashToScalar(msg, options) {\n // @ts-ignore\n const N = Point.Fn.ORDER;\n const opts = Object.assign({}, defaults, { p: N, m: 1, DST: _DST_scalar }, options);\n return hash_to_field(msg, 1, opts)[0][0];\n },\n };\n}\n//# sourceMappingURL=hash-to-curve.js.map","/**\n * SECG secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Belongs to Koblitz curves: it has efficiently-computable GLV endomorphism ψ,\n * check out {@link EndomorphismOpts}. Seems to be rigid (not backdoored).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { randomBytes } from '@noble/hashes/utils.js';\nimport { createCurve } from \"./_shortw_utils.js\";\nimport { createHasher, isogenyMap, } from \"./abstract/hash-to-curve.js\";\nimport { Field, mapHashToField, mod, pow2 } from \"./abstract/modular.js\";\nimport { _normFnElement, mapToCurveSimpleSWU, } from \"./abstract/weierstrass.js\";\nimport { bytesToNumberBE, concatBytes, ensureBytes, inRange, numberToBytesBE, utf8ToBytes, } from \"./utils.js\";\n// Seems like generator was produced from some seed:\n// `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`\n// // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n\nconst secp256k1_CURVE = {\n p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: BigInt(1),\n a: BigInt(0),\n b: BigInt(7),\n Gx: BigInt('0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'),\n Gy: BigInt('0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8'),\n};\nconst secp256k1_ENDO = {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n basises: [\n [BigInt('0x3086d221a7d46bcde86c90e49284eb15'), -BigInt('0xe4437ed6010e88286f547fa90abfe4c3')],\n [BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'), BigInt('0x3086d221a7d46bcde86c90e49284eb15')],\n ],\n};\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\n/**\n * √n = n^((p+1)/4) for fields p = 3 mod 4. We unwrap the loop and multiply bit-by-bit.\n * (P+1n/4n).toString(2) would produce bits [223x 1, 0, 22x 1, 4x 0, 11, 00]\n */\nfunction sqrtMod(y) {\n const P = secp256k1_CURVE.p;\n // prettier-ignore\n const _3n = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22);\n // prettier-ignore\n const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);\n const b2 = (y * y * y) % P; // x^3, 11\n const b3 = (b2 * b2 * y) % P; // x^7\n const b6 = (pow2(b3, _3n, P) * b3) % P;\n const b9 = (pow2(b6, _3n, P) * b3) % P;\n const b11 = (pow2(b9, _2n, P) * b2) % P;\n const b22 = (pow2(b11, _11n, P) * b11) % P;\n const b44 = (pow2(b22, _22n, P) * b22) % P;\n const b88 = (pow2(b44, _44n, P) * b44) % P;\n const b176 = (pow2(b88, _88n, P) * b88) % P;\n const b220 = (pow2(b176, _44n, P) * b44) % P;\n const b223 = (pow2(b220, _3n, P) * b3) % P;\n const t1 = (pow2(b223, _23n, P) * b22) % P;\n const t2 = (pow2(t1, _6n, P) * b2) % P;\n const root = pow2(t2, _2n, P);\n if (!Fpk1.eql(Fpk1.sqr(root), y))\n throw new Error('Cannot find square root');\n return root;\n}\nconst Fpk1 = Field(secp256k1_CURVE.p, { sqrt: sqrtMod });\n/**\n * secp256k1 curve, ECDSA and ECDH methods.\n *\n * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`\n *\n * @example\n * ```js\n * import { secp256k1 } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = secp256k1.keygen();\n * const msg = new TextEncoder().encode('hello');\n * const sig = secp256k1.sign(msg, secretKey);\n * const isValid = secp256k1.verify(sig, msg, publicKey) === true;\n * ```\n */\nexport const secp256k1 = createCurve({ ...secp256k1_CURVE, Fp: Fpk1, lowS: true, endo: secp256k1_ENDO }, sha256);\n// Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.\n// https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES = {};\nfunction taggedHash(tag, ...messages) {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(utf8ToBytes(tag));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point) => point.toBytes(true).slice(1);\nconst Pointk1 = /* @__PURE__ */ (() => secp256k1.Point)();\nconst hasEven = (y) => y % _2n === _0n;\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv) {\n const { Fn, BASE } = Pointk1;\n const d_ = _normFnElement(Fn, priv);\n const p = BASE.multiply(d_); // P = d'⋅G; 0 < d' < n check is done inside\n const scalar = hasEven(p.y) ? d_ : Fn.neg(d_);\n return { scalar, bytes: pointToBytes(p) };\n}\n/**\n * lift_x from BIP340. Convert 32-byte x coordinate to elliptic curve point.\n * @returns valid point checked for being on-curve\n */\nfunction lift_x(x) {\n const Fp = Fpk1;\n if (!Fp.isValidNot0(x))\n throw new Error('invalid x: Fail if x ≥ p');\n const xx = Fp.create(x * x);\n const c = Fp.create(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.\n let y = Fp.sqrt(c); // Let y = c^(p+1)/4 mod p. Same as sqrt().\n // Return the unique point P such that x(P) = x and\n // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n if (!hasEven(y))\n y = Fp.neg(y);\n const p = Pointk1.fromAffine({ x, y });\n p.assertValidity();\n return p;\n}\nconst num = bytesToNumberBE;\n/**\n * Create tagged hash, convert it to bigint, reduce modulo-n.\n */\nfunction challenge(...args) {\n return Pointk1.Fn.create(num(taggedHash('BIP0340/challenge', ...args)));\n}\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(secretKey) {\n return schnorrGetExtPubKey(secretKey).bytes; // d'=int(sk). Fail if d'=0 or d'≥n. Ret bytes(d'⋅G)\n}\n/**\n * Creates Schnorr signature as per BIP340. Verifies itself before returning anything.\n * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.\n */\nfunction schnorrSign(message, secretKey, auxRand = randomBytes(32)) {\n const { Fn } = Pointk1;\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = Fn.toBytes(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)\n const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)\n // Let k' = int(rand) mod n. Fail if k' = 0. Let R = k'⋅G\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(rand);\n const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.\n const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).\n sig.set(rx, 0);\n sig.set(Fn.toBytes(Fn.create(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px))\n throw new Error('sign: Invalid signature produced');\n return sig;\n}\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature, message, publicKey) {\n const { Fn, BASE } = Pointk1;\n const sig = ensureBytes('signature', signature, 64);\n const m = ensureBytes('message', message);\n const pub = ensureBytes('publicKey', publicKey, 32);\n try {\n const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails\n const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.\n if (!inRange(r, _1n, secp256k1_CURVE.p))\n return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.\n if (!inRange(s, _1n, secp256k1_CURVE.n))\n return false;\n // int(challenge(bytes(r)||bytes(P)||m))%n\n const e = challenge(Fn.toBytes(r), pointToBytes(P), m);\n // R = s⋅G - e⋅P, where -eP == (n-e)P\n const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn.neg(e)));\n const { x, y } = R.toAffine();\n // Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.\n if (R.is0() || !hasEven(y) || x !== r)\n return false;\n return true;\n }\n catch (error) {\n return false;\n }\n}\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * ```js\n * import { schnorr } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = schnorr.keygen();\n * // const publicKey = schnorr.getPublicKey(secretKey);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, secretKey);\n * const isValid = schnorr.verify(sig, msg, publicKey);\n * ```\n */\nexport const schnorr = /* @__PURE__ */ (() => {\n const size = 32;\n const seedLength = 48;\n const randomSecretKey = (seed = randomBytes(seedLength)) => {\n return mapHashToField(seed, secp256k1_CURVE.n);\n };\n // TODO: remove\n secp256k1.utils.randomSecretKey;\n function keygen(seed) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: schnorrGetPublicKey(secretKey) };\n }\n return {\n keygen,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n Point: Pointk1,\n utils: {\n randomSecretKey: randomSecretKey,\n randomPrivateKey: randomSecretKey,\n taggedHash,\n // TODO: remove\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n mod,\n },\n lengths: {\n secretKey: size,\n publicKey: size,\n publicKeyHasPrefix: false,\n signature: size * 2,\n seed: seedLength,\n },\n };\n})();\nconst isoMap = /* @__PURE__ */ (() => isogenyMap(Fpk1, [\n // xNum\n [\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',\n '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',\n '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',\n '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',\n ],\n // xDen\n [\n '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',\n '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n // yNum\n [\n '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',\n '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',\n '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',\n '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',\n ],\n // yDen\n [\n '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',\n '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',\n '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',\n '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1\n ],\n].map((i) => i.map((j) => BigInt(j)))))();\nconst mapSWU = /* @__PURE__ */ (() => mapToCurveSimpleSWU(Fpk1, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fpk1.create(BigInt('-11')),\n}))();\n/** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */\nexport const secp256k1_hasher = /* @__PURE__ */ (() => createHasher(secp256k1.Point, (scalars) => {\n const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n return isoMap(x, y);\n}, {\n DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',\n encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',\n p: Fpk1.ORDER,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha256,\n}))();\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const hashToCurve = /* @__PURE__ */ (() => secp256k1_hasher.hashToCurve)();\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const encodeToCurve = /* @__PURE__ */ (() => secp256k1_hasher.encodeToCurve)();\n//# sourceMappingURL=secp256k1.js.map","/**\n\nSHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions.\nDon't use them in a new protocol. What \"weak\" means:\n\n- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.\n- No practical pre-image attacks (only theoretical, 2^123.4)\n- HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151\n * @module\n */\nimport { Chi, HashMD, Maj } from \"./_md.js\";\nimport { clean, createHasher, rotl } from \"./utils.js\";\n/** Initial SHA1 state */\nconst SHA1_IV = /* @__PURE__ */ Uint32Array.from([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Reusable temporary buffer\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\n/** SHA1 legacy hash class. */\nexport class SHA1 extends HashMD {\n constructor() {\n super(64, 20, 8, false);\n this.A = SHA1_IV[0] | 0;\n this.B = SHA1_IV[1] | 0;\n this.C = SHA1_IV[2] | 0;\n this.D = SHA1_IV[3] | 0;\n this.E = SHA1_IV[4] | 0;\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n clean(SHA1_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\nexport const sha1 = /* @__PURE__ */ createHasher(() => new SHA1());\n/** Per-round constants */\nconst p32 = /* @__PURE__ */ Math.pow(2, 32);\nconst K = /* @__PURE__ */ Array.from({ length: 64 }, (_, i) => Math.floor(p32 * Math.abs(Math.sin(i + 1))));\n/** md5 initial state: same as sha1, but 4 u32 instead of 5. */\nconst MD5_IV = /* @__PURE__ */ SHA1_IV.slice(0, 4);\n// Reusable temporary buffer\nconst MD5_W = /* @__PURE__ */ new Uint32Array(16);\n/** MD5 legacy hash class. */\nexport class MD5 extends HashMD {\n constructor() {\n super(64, 16, 8, true);\n this.A = MD5_IV[0] | 0;\n this.B = MD5_IV[1] | 0;\n this.C = MD5_IV[2] | 0;\n this.D = MD5_IV[3] | 0;\n }\n get() {\n const { A, B, C, D } = this;\n return [A, B, C, D];\n }\n set(A, B, C, D) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n MD5_W[i] = view.getUint32(offset, true);\n // Compression function main loop, 64 rounds\n let { A, B, C, D } = this;\n for (let i = 0; i < 64; i++) {\n let F, g, s;\n if (i < 16) {\n F = Chi(B, C, D);\n g = i;\n s = [7, 12, 17, 22];\n }\n else if (i < 32) {\n F = Chi(D, B, C);\n g = (5 * i + 1) % 16;\n s = [5, 9, 14, 20];\n }\n else if (i < 48) {\n F = B ^ C ^ D;\n g = (3 * i + 5) % 16;\n s = [4, 11, 16, 23];\n }\n else {\n F = C ^ (B | ~D);\n g = (7 * i) % 16;\n s = [6, 10, 15, 21];\n }\n F = F + A + K[i] + MD5_W[g];\n A = D;\n D = C;\n C = B;\n B = B + rotl(F, s[i % 4]);\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n this.set(A, B, C, D);\n }\n roundClean() {\n clean(MD5_W);\n }\n destroy() {\n this.set(0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/**\n * MD5 (RFC 1321) legacy hash function. It was cryptographically broken.\n * MD5 architecture is similar to SHA1, with some differences:\n * - Reduced output length: 16 bytes (128 bit) instead of 20\n * - 64 rounds, instead of 80\n * - Little-endian: could be faster, but will require more code\n * - Non-linear index selection: huge speed-up for unroll\n * - Per round constants: more memory accesses, additional speed-up for unroll\n */\nexport const md5 = /* @__PURE__ */ createHasher(() => new MD5());\n// RIPEMD-160\nconst Rho160 = /* @__PURE__ */ Uint8Array.from([\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n]);\nconst Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();\nconst Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();\nconst idxLR = /* @__PURE__ */ (() => {\n const L = [Id160];\n const R = [Pi160];\n const res = [L, R];\n for (let i = 0; i < 4; i++)\n for (let j of res)\n j.push(j[i].map((k) => Rho160[k]));\n return res;\n})();\nconst idxL = /* @__PURE__ */ (() => idxLR[0])();\nconst idxR = /* @__PURE__ */ (() => idxLR[1])();\n// const [idxL, idxR] = idxLR;\nconst shifts160 = /* @__PURE__ */ [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => Uint8Array.from(i));\nconst shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst Kl160 = /* @__PURE__ */ Uint32Array.from([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr160 = /* @__PURE__ */ Uint32Array.from([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// It's called f() in spec.\nfunction ripemd_f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n if (group === 1)\n return (x & y) | (~x & z);\n if (group === 2)\n return (x | ~y) ^ z;\n if (group === 3)\n return (x & z) | (y & ~z);\n return x ^ (y | ~z);\n}\n// Reusable temporary buffer\nconst BUF_160 = /* @__PURE__ */ new Uint32Array(16);\nexport class RIPEMD160 extends HashMD {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF_160[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl160[group], hbr = Kr160[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL160[group], sr = shiftsR160[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n clean(BUF_160);\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a legacy hash function from 1990s.\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n */\nexport const ripemd160 = /* @__PURE__ */ createHasher(() => new RIPEMD160());\n//# sourceMappingURL=legacy.js.map","/**\n * RIPEMD-160 legacy hash function.\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n * @module\n * @deprecated\n */\nimport { RIPEMD160 as RIPEMD160n, ripemd160 as ripemd160n } from \"./legacy.js\";\n/** @deprecated Use import from `noble/hashes/legacy` module */\nexport const RIPEMD160 = RIPEMD160n;\n/** @deprecated Use import from `noble/hashes/legacy` module */\nexport const ripemd160 = ripemd160n;\n//# sourceMappingURL=ripemd160.js.map","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nfunction isBytes(a) {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b, ...lengths) {\n if (!isBytes(b))\n throw new Error('Uint8Array expected');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\nfunction isArrayOf(isString, arr) {\n if (!Array.isArray(arr))\n return false;\n if (arr.length === 0)\n return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n }\n else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n// no abytes: seems to have 10% slowdown. Why?!\nfunction afn(input) {\n if (typeof input !== 'function')\n throw new Error('function expected');\n return true;\n}\nfunction astr(label, input) {\n if (typeof input !== 'string')\n throw new Error(`${label}: string expected`);\n return true;\n}\nfunction anumber(n) {\n if (!Number.isSafeInteger(n))\n throw new Error(`invalid integer: ${n}`);\n}\nfunction aArr(input) {\n if (!Array.isArray(input))\n throw new Error('array expected');\n}\nfunction astrArr(label, input) {\n if (!isArrayOf(true, input))\n throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label, input) {\n if (!isArrayOf(false, input))\n throw new Error(`${label}: array of numbers expected`);\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain(...args) {\n const id = (a) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a, b) => (c) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters) {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(`alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`);\n return lettersA[i];\n });\n },\n decode: (input) => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined)\n throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = '') {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits, chr = '=') {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data) {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8)\n data.push(chr);\n return data;\n },\n decode(input) {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0)\n throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn) {\n afn(fn);\n return { encode: (from) => from, decode: (to) => fn(to) };\n}\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data, from, to) {\n // base 1 is impossible\n if (from < 2)\n throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2)\n throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length)\n return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from)\n throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i];\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (!Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done)\n continue;\n else if (!rounded)\n pos = i;\n else\n done = false;\n }\n res.push(carry);\n if (done)\n break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++)\n res.push(0);\n return res.reverse();\n}\nconst gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to));\nconst powers = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++)\n res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data, from, to, padding) {\n aArr(data);\n if (from <= 0 || from > 32)\n throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32)\n throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`);\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from];\n const mask = powers[to] - 1;\n const res = [];\n for (const n of data) {\n anumber(n);\n if (n >= max)\n throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to)\n res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined)\n throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from)\n throw new Error('Excess padding');\n if (!padding && carry > 0)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.push(carry >>> 0);\n return res;\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num) {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits, revPadding = false) {\n anumber(bits);\n if (bits <= 0 || bits > 32)\n throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes) => {\n if (!isBytes(bytes))\n throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\nfunction unsafeWrapper(fn) {\n afn(fn);\n return function (...args) {\n try {\n return fn.apply(null, args);\n }\n catch (e) { }\n };\n}\nfunction checksum(len, fn) {\n anumber(len);\n afn(fn);\n return {\n encode(data) {\n if (!isBytes(data))\n throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data) {\n if (!isBytes(data))\n throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i])\n throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n// prettier-ignore\nexport const utils = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n// RFC 4648 aka RFC 3548\n// ---------------------\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16 = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32 = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad = chain(radix2(5), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'), join(''));\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), padding(5), join(''));\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad = chain(radix2(5), alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'), join(''));\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford = chain(radix2(5), alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'), join(''), normalize((s) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1')));\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === 'function' &&\n typeof Uint8Array.fromBase64 === 'function')();\nconst decodeBase64Builtin = (s, isUrl) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s))\n throw new Error('invalid base64');\n return Uint8Array.fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64 = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), padding(6), join(''));\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url = hasBase64Builtin ? {\n encode(b) { abytes(b); return b.toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), padding(6), join(''));\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad = chain(radix2(6), alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'), join(''));\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => chain(radix(58), alphabet(abc), join(''));\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58 = genBase58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr = genBase58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ');\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp = genBase58('rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz');\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr = {\n encode(data) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], '1');\n }\n return res;\n },\n decode(str) {\n let res = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0)\n throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256) => chain(checksum(4, (data) => sha256(sha256(data))), base58);\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check = createBase58check;\nconst BECH_ALPHABET = chain(alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'), join(''));\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre) {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1)\n chk ^= POLYMOD_GENERATORS[i];\n }\n return chk;\n}\nfunction bechChecksum(prefix, words, encodingConst = 1) {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++)\n chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words)\n chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++)\n chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false));\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding) {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n function encode(prefix, words, limit = 90) {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words))\n words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0)\n throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`;\n }\n function decode(str, limit = 90) {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6)\n throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum))\n throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n const decodeUnsafe = unsafeWrapper(decode);\n function decodeToBytes(str) {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n function encodeFromBytes(prefix, bytes) {\n return encode(prefix, toWords(bytes));\n }\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32 = genBech32('bech32');\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m = genBech32('bech32m');\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8 = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === 'function' &&\n typeof Uint8Array.fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin = {\n encode(data) { abytes(data); return data.toHex(); },\n decode(s) { astr('hex', s); return Uint8Array.fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex = hasHexBuiltin\n ? hexBuiltin\n : chain(radix2(4), alphabet('0123456789abcdef'), join(''), normalize((s) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`);\n return s.toLowerCase();\n }));\n// prettier-ignore\nconst CODERS = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\nconst coderTypeError = 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n/** @deprecated */\nexport const bytesToString = (type, bytes) => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (!isBytes(bytes))\n throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n/** @deprecated */\nexport const str = bytesToString; // as in python, but for bytes only\n/** @deprecated */\nexport const stringToBytes = (type, str) => {\n if (!CODERS.hasOwnProperty(type))\n throw new TypeError(coderTypeError);\n if (typeof str !== 'string')\n throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes = stringToBytes;\n//# sourceMappingURL=index.js.map","/**\n * SHA2-256 a.k.a. sha256. In JS, it is the fastest hash, even faster than Blake3.\n *\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n *\n * Check out [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n * @deprecated\n */\nimport { SHA224 as SHA224n, sha224 as sha224n, SHA256 as SHA256n, sha256 as sha256n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA256 = SHA256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha256 = sha256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA224 = SHA224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha224 = sha224n;\n//# sourceMappingURL=sha256.js.map","import { sha256 } from \"@noble/hashes/sha256\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base58, createBase58check } from \"@scure/base\";\nconst base58Unchecked = base58;\nexport const base58UncheckedEncode = base58Unchecked.encode;\nexport const base58UncheckedDecode = base58Unchecked.decode;\nconst base58Check = createBase58check(sha256);\nexport const base58CheckEncode = base58Check.encode;\nexport const base58CheckDecode = base58Check.decode;\nexport const createBase58VersionedEncoder = (p2pkhVersion, p2shVersion) => (source) => {\n // P2PKH: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG\n if (source[0] === 0x76) {\n if (source[1] !== 0xa9 ||\n source[source.length - 2] !== 0x88 ||\n source[source.length - 1] !== 0xac) {\n throw new Error(\"Unrecognised address format\");\n }\n return base58CheckEncode(concatBytes(p2pkhVersion, source.slice(3, 3 + source[2])));\n }\n // P2SH: OP_HASH160 <scriptHash> OP_EQUAL\n if (source[0] === 0xa9) {\n if (source[source.length - 1] !== 0x87) {\n throw new Error(\"Unrecognised address format\");\n }\n return base58CheckEncode(concatBytes(p2shVersion, source.slice(2, 2 + source[1])));\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const createBase58VersionedDecoder = (p2pkhVersions, p2shVersions) => (source) => {\n const addr = base58CheckDecode(source);\n // Checks if the first addr bytes are exactly equal to provided version field\n const checkVersion = (version) => {\n return version.every((value, index) => index < addr.length && value === addr[index]);\n };\n if (p2pkhVersions.some(checkVersion))\n return concatBytes(new Uint8Array([0x76, 0xa9, 0x14]), addr.slice(p2pkhVersions[0].length), new Uint8Array([0x88, 0xac]));\n if (p2shVersions.some(checkVersion))\n return concatBytes(new Uint8Array([0xa9, 0x14]), addr.slice(p2shVersions[0].length), new Uint8Array([0x87]));\n throw new Error(\"Unrecognised address format\");\n};\n//# sourceMappingURL=base58.js.map","import { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { utils } from \"@scure/base\";\nimport { base58UncheckedDecode, base58UncheckedEncode } from \"./base58.js\";\nconst eosChecksum = utils.checksum(4, ripemd160);\nexport const createEosEncoder = (prefix) => (source) => {\n const point = secp256k1.ProjectivePoint.fromHex(source);\n const checksummed = eosChecksum.encode(point.toRawBytes(true));\n const encoded = base58UncheckedEncode(checksummed);\n return `${prefix}${encoded}`;\n};\nexport const createEosDecoder = (prefix) => (source) => {\n if (!source.startsWith(prefix))\n throw new Error(\"Unrecognised address format\");\n const prefixStripped = source.slice(prefix.length);\n const decoded = base58UncheckedDecode(prefixStripped);\n const checksummed = eosChecksum.decode(decoded);\n return checksummed;\n};\n//# sourceMappingURL=eosio.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"abbc\";\nconst coinType = 367;\nconst prefix = \"ABBC\";\nexport const encodeAbbcAddress = createEosEncoder(prefix);\nexport const decodeAbbcAddress = createEosDecoder(prefix);\nexport const abbc = {\n name,\n coinType,\n encode: encodeAbbcAddress,\n decode: decodeAbbcAddress,\n};\n//# sourceMappingURL=abbc.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { bech32, bech32m } from \"@scure/base\";\nconst createInternalBech32Encoder = ({ bechLib, hrp, limit }) => (source) => {\n return bechLib.encode(hrp, bechLib.toWords(source), limit);\n};\nconst createInternalBech32Decoder = ({ bechLib, hrp, limit }) => (source) => {\n const { prefix, words } = bechLib.decode(source, limit);\n if (prefix !== hrp) {\n throw new Error(\"Unexpected human-readable part in bech32 encoded address\");\n }\n return new Uint8Array(bechLib.fromWords(words));\n};\nexport const createBech32Encoder = (hrp, limit) => createInternalBech32Encoder({ hrp, bechLib: bech32, limit });\nexport const createBech32Decoder = (hrp, limit) => createInternalBech32Decoder({ hrp, bechLib: bech32, limit });\nexport const createBech32mEncoder = (hrp, limit) => createInternalBech32Encoder({ hrp, bechLib: bech32m, limit });\nexport const createBech32mDecoder = (hrp, limit) => createInternalBech32Decoder({ hrp, bechLib: bech32m, limit });\nexport const createBech32SegwitEncoder = (hrp) => (source) => {\n let version = source[0];\n if (version >= 0x51 && version <= 0x60) {\n version -= 0x50;\n }\n else if (version !== 0x00) {\n throw new Error(\"Unrecognised address format\");\n }\n let words = [];\n if (version > 0 && version < 17) {\n words = [version].concat(bech32m.toWords(source.slice(2, source[1] + 2)));\n return bech32m.encode(hrp, words);\n }\n words = [version].concat(bech32.toWords(source.slice(2, source[1] + 2)));\n return bech32.encode(hrp, words);\n};\nexport const createBech32SegwitDecoder = (hrp) => (source) => {\n const decodedObj = bech32.decodeUnsafe(source) || bech32m.decodeUnsafe(source);\n if (!decodedObj)\n throw new Error(\"Unrecognised address format\");\n const { prefix, words } = decodedObj;\n if (prefix !== hrp)\n throw new Error(\"Unexpected human-readable part in bech32 encoded address\");\n const script = bech32.fromWords(words.slice(1));\n let version = words[0];\n if (version > 0) {\n version += 0x50;\n }\n return concatBytes(new Uint8Array([version, script.length]), new Uint8Array(script));\n};\n//# sourceMappingURL=bech32.js.map","// Ported from https://www.npmjs.com/package/cbor-redux as the release 0.4.0 was missing on npm, which has critical changes.\n/** @hidden */\nconst POW_2_24 = 5.960464477539063e-8;\n/** @hidden */\nconst POW_2_32 = 4294967296;\n/** @hidden */\nconst POW_2_53 = 9007199254740992;\n/** @hidden */\nconst DECODE_CHUNK_SIZE = 8192;\n/** @hidden */\nfunction objectIs(x, y) {\n if (typeof Object.is === \"function\") {\n return Object.is(x, y);\n }\n // SameValue algorithm\n // Steps 1-5, 7-10\n if (x === y) {\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n }\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n}\n/** Convenience class for structuring a tagged value. */\nexport class TaggedValue {\n constructor(value, tag) {\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tag\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.value = value;\n this.tag = tag;\n }\n}\n/** Convenience class for structuring a simple value. */\nexport class SimpleValue {\n constructor(value) {\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.value = value;\n }\n}\nexport function cborDecode(data) {\n const dataView = new DataView(data);\n const ta = new Uint8Array(data);\n let offset = 0;\n let tagValueFunction = (value, tag) => {\n return new TaggedValue(value, tag);\n };\n let simpleValueFunction = (value) => {\n return new SimpleValue(value);\n };\n function commitRead(length, value) {\n offset += length;\n return value;\n }\n function readArrayBuffer(length) {\n return commitRead(length, new Uint8Array(data, offset, length));\n }\n function readFloat16() {\n const tempArrayBuffer = new ArrayBuffer(4);\n const tempDataView = new DataView(tempArrayBuffer);\n const value = readUint16();\n const sign = value & 0x8000;\n let exponent = value & 0x7c00;\n const fraction = value & 0x03ff;\n if (exponent === 0x7c00) {\n exponent = 0xff << 10;\n }\n else if (exponent !== 0) {\n exponent += (127 - 15) << 10;\n }\n else if (fraction !== 0) {\n return (sign ? -1 : 1) * fraction * POW_2_24;\n }\n tempDataView.setUint32(0, (sign << 16) | (exponent << 13) | (fraction << 13));\n return tempDataView.getFloat32(0);\n }\n function readFloat32() {\n return commitRead(4, dataView.getFloat32(offset));\n }\n function readFloat64() {\n return commitRead(8, dataView.getFloat64(offset));\n }\n function readUint8() {\n return commitRead(1, ta[offset]);\n }\n function readUint16() {\n return commitRead(2, dataView.getUint16(offset));\n }\n function readUint32() {\n return commitRead(4, dataView.getUint32(offset));\n }\n function readUint64() {\n return readUint32() * POW_2_32 + readUint32();\n }\n function readBreak() {\n if (ta[offset] !== 0xff) {\n return false;\n }\n offset += 1;\n return true;\n }\n function readLength(additionalInformation) {\n if (additionalInformation < 24) {\n return additionalInformation;\n }\n else if (additionalInformation === 24) {\n return readUint8();\n }\n else if (additionalInformation === 25) {\n return readUint16();\n }\n else if (additionalInformation === 26) {\n return readUint32();\n }\n else if (additionalInformation === 27) {\n return readUint64();\n }\n else if (additionalInformation === 31) {\n return -1;\n }\n throw new Error(\"Invalid length encoding\");\n }\n function readIndefiniteStringLength(majorType) {\n const initialByte = readUint8();\n if (initialByte === 0xff) {\n return -1;\n }\n const length = readLength(initialByte & 0x1f);\n if (length < 0 || initialByte >> 5 !== majorType) {\n throw new Error(\"Invalid indefinite length element\");\n }\n return length;\n }\n function appendUtf16Data(utf16data, length) {\n for (let i = 0; i < length; ++i) {\n let value = readUint8();\n if (value & 0x80) {\n if (value < 0xe0) {\n value = ((value & 0x1f) << 6) | (readUint8() & 0x3f);\n length -= 1;\n }\n else if (value < 0xf0) {\n value =\n ((value & 0x0f) << 12) |\n ((readUint8() & 0x3f) << 6) |\n (readUint8() & 0x3f);\n length -= 2;\n }\n else {\n value =\n ((value & 0x0f) << 18) |\n ((readUint8() & 0x3f) << 12) |\n ((readUint8() & 0x3f) << 6) |\n (readUint8() & 0x3f);\n length -= 3;\n }\n }\n if (value < 0x10000) {\n utf16data.push(value);\n }\n else {\n value -= 0x10000;\n utf16data.push(0xd800 | (value >> 10));\n utf16data.push(0xdc00 | (value & 0x3ff));\n }\n }\n }\n function decodeItem() {\n const initialByte = readUint8();\n const majorType = initialByte >> 5;\n const additionalInformation = initialByte & 0x1f;\n let i;\n let length;\n if (majorType === 7) {\n switch (additionalInformation) {\n case 25:\n return readFloat16();\n case 26:\n return readFloat32();\n case 27:\n return readFloat64();\n }\n }\n length = readLength(additionalInformation);\n if (length < 0 && (majorType < 2 || 6 < majorType)) {\n throw new Error(\"Invalid length\");\n }\n switch (majorType) {\n case 0:\n return length;\n case 1:\n return -1 - length;\n case 2:\n if (length < 0) {\n const elements = [];\n let fullArrayLength = 0;\n length = readIndefiniteStringLength(majorType);\n while (length >= 0) {\n fullArrayLength += length;\n elements.push(readArrayBuffer(length));\n }\n const fullArray = new Uint8Array(fullArrayLength);\n let fullArrayOffset = 0;\n for (i = 0; i < elements.length; ++i) {\n fullArray.set(elements[i], fullArrayOffset);\n fullArrayOffset += elements[i].length;\n }\n return fullArray;\n }\n return readArrayBuffer(length);\n case 3:\n const utf16data = [];\n if (length < 0) {\n length = readIndefiniteStringLength(majorType);\n while (length >= 0) {\n appendUtf16Data(utf16data, length);\n }\n }\n else {\n appendUtf16Data(utf16data, length);\n }\n let str = \"\";\n for (i = 0; i < utf16data.length; i += DECODE_CHUNK_SIZE) {\n str += String.fromCharCode.apply(null, utf16data.slice(i, i + DECODE_CHUNK_SIZE));\n }\n return str;\n case 4:\n let retArray;\n if (length < 0) {\n retArray = [];\n while (!readBreak()) {\n retArray.push(decodeItem());\n }\n }\n else {\n retArray = new Array(length);\n for (i = 0; i < length; ++i) {\n retArray[i] = decodeItem();\n }\n }\n return retArray;\n case 5:\n const retObject = {};\n for (i = 0; i < length || (length < 0 && !readBreak()); ++i) {\n const key = decodeItem();\n retObject[key] = decodeItem();\n }\n return retObject;\n case 6:\n return tagValueFunction(decodeItem(), length);\n case 7:\n switch (length) {\n case 20:\n return false;\n case 21:\n return true;\n case 22:\n return null;\n case 23:\n return undefined;\n default:\n return simpleValueFunction(length);\n }\n }\n }\n const ret = decodeItem();\n if (offset !== data.byteLength) {\n throw new Error(\"Remaining bytes\");\n }\n return ret;\n}\nexport function cborEncode(value) {\n let data = new ArrayBuffer(256);\n let dataView = new DataView(data);\n let byteView = new Uint8Array(data);\n let lastLength;\n let offset = 0;\n function prepareWrite(length) {\n let newByteLength = data.byteLength;\n const requiredLength = offset + length;\n while (newByteLength < requiredLength) {\n newByteLength <<= 1;\n }\n if (newByteLength !== data.byteLength) {\n const oldDataView = dataView;\n data = new ArrayBuffer(newByteLength);\n dataView = new DataView(data);\n byteView = new Uint8Array(data);\n const uint32count = (offset + 3) >> 2;\n for (let i = 0; i < uint32count; ++i) {\n dataView.setUint32(i << 2, oldDataView.getUint32(i << 2));\n }\n }\n lastLength = length;\n return dataView;\n }\n function commitWrite(..._args) {\n offset += lastLength;\n }\n function writeFloat64(val) {\n commitWrite(prepareWrite(8).setFloat64(offset, val));\n }\n function writeUint8(val) {\n commitWrite(prepareWrite(1).setUint8(offset, val));\n }\n function writeUint8Array(val) {\n prepareWrite(val.length);\n byteView.set(val, offset);\n commitWrite();\n }\n function writeUint16(val) {\n commitWrite(prepareWrite(2).setUint16(offset, val));\n }\n function writeUint32(val) {\n commitWrite(prepareWrite(4).setUint32(offset, val));\n }\n function writeUint64(val) {\n const low = val % POW_2_32;\n const high = (val - low) / POW_2_32;\n const view = prepareWrite(8);\n view.setUint32(offset, high);\n view.setUint32(offset + 4, low);\n commitWrite();\n }\n function writeVarUint(val, mod) {\n if (val <= 0xff) {\n if (val < 24) {\n writeUint8(val | mod);\n }\n else {\n writeUint8(0x18 | mod);\n writeUint8(val);\n }\n }\n else if (val <= 0xffff) {\n writeUint8(0x19 | mod);\n writeUint16(val);\n }\n else if (val <= 0xffffffff) {\n writeUint8(0x1a | mod);\n writeUint32(val);\n }\n else {\n writeUint8(0x1b | mod);\n writeUint64(val);\n }\n }\n function writeTypeAndLength(type, length) {\n if (length < 24) {\n writeUint8((type << 5) | length);\n }\n else if (length < 0x100) {\n writeUint8((type << 5) | 24);\n writeUint8(length);\n }\n else if (length < 0x10000) {\n writeUint8((type << 5) | 25);\n writeUint16(length);\n }\n else if (length < 0x100000000) {\n writeUint8((type << 5) | 26);\n writeUint32(length);\n }\n else {\n writeUint8((type << 5) | 27);\n writeUint64(length);\n }\n }\n function encodeItem(val) {\n let i;\n if (val === false) {\n return writeUint8(0xf4);\n }\n else if (val === true) {\n return writeUint8(0xf5);\n }\n else if (val === null) {\n return writeUint8(0xf6);\n }\n else if (val === undefined) {\n return writeUint8(0xf7);\n }\n else if (objectIs(val, -0)) {\n return writeUint8Array([0xf9, 0x80, 0x00]);\n }\n switch (typeof val) {\n case \"number\":\n if (Math.floor(val) === val) {\n if (0 <= val && val <= POW_2_53) {\n return writeTypeAndLength(0, val);\n }\n else if (-POW_2_53 <= val && val < 0) {\n return writeTypeAndLength(1, -(val + 1));\n }\n }\n writeUint8(0xfb);\n return writeFloat64(val);\n case \"string\":\n const utf8data = [];\n for (i = 0; i < val.length; i++) {\n let charCode = val.charCodeAt(i);\n if (charCode < 0x80) {\n utf8data.push(charCode);\n }\n else if (charCode < 0x800) {\n utf8data.push(0xc0 | (charCode >> 6));\n utf8data.push(0x80 | (charCode & 0x3f));\n }\n else {\n charCode = (charCode & 0x3ff) << 10;\n charCode |= val.charCodeAt(++i) & 0x3ff;\n charCode += 0x10000;\n utf8data.push(0xf0 | (charCode >> 18));\n utf8data.push(0x80 | ((charCode >> 12) & 0x3f));\n utf8data.push(0x80 | ((charCode >> 6) & 0x3f));\n utf8data.push(0x80 | (charCode & 0x3f));\n }\n }\n writeTypeAndLength(3, utf8data.length);\n return writeUint8Array(utf8data);\n default:\n let length;\n let converted;\n if (Array.isArray(val)) {\n length = val.length;\n writeTypeAndLength(4, length);\n for (i = 0; i < length; i++) {\n encodeItem(val[i]);\n }\n }\n else if (val instanceof Uint8Array) {\n writeTypeAndLength(2, val.length);\n writeUint8Array(val);\n }\n else if (ArrayBuffer.isView(val)) {\n converted = new Uint8Array(val.buffer);\n writeTypeAndLength(2, converted.length);\n writeUint8Array(converted);\n }\n else if (val instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer === \"function\" &&\n val instanceof SharedArrayBuffer)) {\n converted = new Uint8Array(val);\n writeTypeAndLength(2, converted.length);\n writeUint8Array(converted);\n }\n else if (val instanceof TaggedValue) {\n writeVarUint(val.tag, 0b11000000);\n encodeItem(val.value);\n }\n else {\n const keys = Object.keys(val);\n length = keys.length;\n writeTypeAndLength(5, length);\n for (i = 0; i < length; i++) {\n const key = keys[i];\n encodeItem(key);\n encodeItem(val[key]);\n }\n }\n }\n }\n encodeItem(value);\n if (\"slice\" in data) {\n return data.slice(0, offset);\n }\n const ret = new ArrayBuffer(offset);\n const retView = new DataView(ret);\n for (let i = 0; i < offset; ++i) {\n retView.setUint8(i, dataView.getUint8(i));\n }\n return ret;\n}\n//# sourceMappingURL=cbor.js.map","// https://gist.github.com/vbabak/c4e817100228e46ccd621cc4caf0f87f\n/**\n * Lookup table calculated for 0xEDB88320 divisor\n */\nconst crc32LookupTable = [\n 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685,\n 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995,\n 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648,\n 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990,\n 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755,\n 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145,\n 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206,\n 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980,\n 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705,\n 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527,\n 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772,\n 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290,\n 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719,\n 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925,\n 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202,\n 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960,\n 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733,\n 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467,\n 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048,\n 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054,\n 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443,\n 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945,\n 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430,\n 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580,\n 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225,\n 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143,\n 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732,\n 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850,\n 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135,\n 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109,\n 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954,\n 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920,\n 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877,\n 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603,\n 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992,\n 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934,\n 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795,\n 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105,\n 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270,\n 936918000, 2847714899, 3736837829, 1202900863, 817233897, 3183342108,\n 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449,\n 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471,\n 3272380065, 1510334235, 755167117,\n];\nconst toUint32 = (num) => {\n if (num >= 0) {\n return num;\n }\n const a = new Uint32Array(1);\n a[0] = num;\n return a[0];\n};\nexport const crc32 = (input) => {\n let crc = 0xffffffff;\n for (const byte of input) {\n const tableIndex = (crc ^ byte) & 0xff;\n const tableVal = crc32LookupTable?.[tableIndex];\n if (tableVal === undefined)\n throw new Error(\"tableIndex out of range 0-255\");\n crc = (crc >>> 8) ^ tableVal;\n }\n return toUint32(crc ^ 0xffffffff);\n};\n//# sourceMappingURL=crc32.js.map","import { base58UncheckedDecode, base58UncheckedEncode } from \"./base58.js\";\nimport { TaggedValue, cborDecode, cborEncode } from \"./cbor.js\";\nimport { crc32 } from \"./crc32.js\";\nexport const byronEncode = (source) => {\n const checksum = crc32(source);\n const taggedValue = new TaggedValue(source.buffer, 24);\n const cborEncodedAddress = cborEncode([taggedValue, checksum]);\n const address = base58UncheckedEncode(new Uint8Array(cborEncodedAddress));\n if (!address.startsWith(\"Ae2\") && !address.startsWith(\"Ddz\"))\n throw new Error(\"Unrecognised address format\");\n return address;\n};\nexport const byronDecode = (source) => {\n const bytes = base58UncheckedDecode(source);\n const cborDecoded = cborDecode(bytes.buffer);\n const taggedAddress = cborDecoded[0];\n if (taggedAddress === undefined)\n throw new Error(\"Unrecognised address format\");\n const checksum = cborDecoded[1];\n const newChecksum = crc32(taggedAddress.value);\n if (checksum !== newChecksum)\n throw new Error(\"Unrecognised address format\");\n return taggedAddress.value;\n};\n//# sourceMappingURL=byron.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nimport { byronDecode, byronEncode } from \"../utils/byron.js\";\nconst name = \"ada\";\nconst coinType = 1815;\nconst hrp = \"addr\";\nconst limit = 104;\nconst cardanoBech32Encode = createBech32Encoder(hrp, limit);\nconst cardanoBech32Decode = createBech32Decoder(hrp, limit);\nexport const encodeAdaAddress = (source) => {\n try {\n return byronEncode(source);\n }\n catch {\n return cardanoBech32Encode(source);\n }\n};\nexport const decodeAdaAddress = (source) => {\n if (source.toLowerCase().startsWith(hrp)) {\n return cardanoBech32Decode(source);\n }\n return byronDecode(source);\n};\nexport const ada = {\n name,\n coinType,\n encode: encodeAdaAddress,\n decode: decodeAdaAddress,\n};\n//# sourceMappingURL=ada.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"ae\";\nconst coinType = 457;\nexport const encodeAeAddress = (source) => {\n return `ak_${base58CheckEncode(source.slice(2))}`;\n};\nexport const decodeAeAddress = (source) => {\n return concatBytes(new Uint8Array([0x30, 0x78] /* 0x string */), base58CheckDecode(source.slice(3)));\n};\nexport const ae = {\n name,\n coinType,\n encode: encodeAeAddress,\n decode: decodeAeAddress,\n};\n//# sourceMappingURL=ae.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"aib\";\nconst coinType = 55;\nconst p2pkhVersions = [new Uint8Array([0x17])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeAibAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeAibAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const aib = {\n name,\n coinType,\n encode: encodeAibAddress,\n decode: decodeAibAddress,\n};\n//# sourceMappingURL=aib.js.map","import { bytesToHex as bytesToNoPrefixHex, hexToBytes as noPrefixHexToBytes, } from \"@noble/hashes/utils\";\n// https://github.com/wagmi-dev/viem/blob/0cd17e9e39fc88b414e125c1dfc9f55d7baf42b7/src/utils/encoding/toBytes.ts#L110C1-L132C2\nexport function hexToBytes(hex_) {\n let hex = hex_;\n let hexString = hex.slice(2);\n if (hexString.length % 2)\n hexString = `0${hexString}`;\n const bytes = new Uint8Array(hexString.length / 2);\n for (let index = 0; index < bytes.length; index++) {\n const start = index * 2;\n const hexByte = hexString.slice(start, start + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error(`Invalid byte sequence (\"${hexByte}\" in \"${hexString}\").`);\n bytes[index] = byte;\n }\n return bytes;\n}\n// https://github.com/wagmi-dev/viem/blob/0cd17e9e39fc88b414e125c1dfc9f55d7baf42b7/src/utils/encoding/fromHex.ts#L213C1-L220C2\nexport function hexToString(hex) {\n let bytes = hexToBytes(hex);\n return new TextDecoder().decode(bytes);\n}\nexport function bytesToString(bytes) {\n return new TextDecoder().decode(bytes);\n}\nexport function stringToBytes(str) {\n return new TextEncoder().encode(str);\n}\nexport function bytesToHex(bytes) {\n return `0x${bytesToNoPrefixHex(bytes)}`;\n}\nexport function bytesToBase10(bytes) {\n let bigInt = BigInt(0);\n for (let i = 0; i < bytes.length; i++) {\n bigInt = (bigInt << BigInt(8)) | BigInt(bytes[i]);\n }\n return bigInt.toString(10);\n}\nexport function base10ToBytes(base10) {\n let bigInt = BigInt(base10);\n const bytes = [];\n while (bigInt > 0) {\n bytes.unshift(Number(bigInt & BigInt(0xff)));\n bigInt >>= BigInt(8);\n }\n return new Uint8Array(bytes);\n}\nexport const bytesToHexWithoutPrefix = bytesToNoPrefixHex;\nexport const hexWithoutPrefixToBytes = noPrefixHexToBytes;\n//# sourceMappingURL=bytes.js.map","import { bytesToHex, hexWithoutPrefixToBytes } from \"../utils/bytes.js\";\nconst name = \"aion\";\nconst coinType = 425;\nconst hexRegex = /^[0-9A-Fa-f]{64}$/g;\nexport const encodeAionAddress = (source) => {\n if (source.length !== 32)\n throw new Error(\"Unrecognised address format\");\n return bytesToHex(source);\n};\nexport const decodeAionAddress = (source) => {\n const noPrefix = source.startsWith(\"0x\") ? source.slice(2) : source;\n if (noPrefix.length !== 64)\n throw new Error(\"Unrecognised address format\");\n if (!hexRegex.test(noPrefix))\n throw new Error(\"Unrecognised address format\");\n return hexWithoutPrefixToBytes(noPrefix);\n};\nexport const aion = {\n name,\n coinType,\n encode: encodeAionAddress,\n decode: decodeAionAddress,\n};\n//# sourceMappingURL=aion.js.map","/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n * @deprecated\n */\nimport { SHA384 as SHA384n, sha384 as sha384n, sha512_224 as sha512_224n, SHA512_224 as SHA512_224n, sha512_256 as sha512_256n, SHA512_256 as SHA512_256n, SHA512 as SHA512n, sha512 as sha512n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512 = SHA512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512 = sha512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA384 = SHA384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha384 = sha384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_224 = SHA512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_224 = sha512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_256 = SHA512_256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_256 = sha512_256n;\n//# sourceMappingURL=sha512.js.map","import { base32, utils } from \"@scure/base\";\nexport const base32Encode = base32.encode;\nexport const base32Decode = base32.decode;\nconst base32Unpadded = utils.chain(utils.radix2(5), utils.alphabet(\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\"), utils.join(\"\"));\nexport const base32UnpaddedEncode = base32Unpadded.encode;\nexport const base32UnpaddedDecode = base32Unpadded.decode;\nexport const base32CrockfordNormalise = (source) => source.toUpperCase().replace(/O/g, \"0\").replace(/[IL]/g, \"1\");\n//# sourceMappingURL=base32.js.map","import { sha512_256 } from \"@noble/hashes/sha512\";\nimport { utils } from \"@scure/base\";\nimport { base32UnpaddedDecode, base32UnpaddedEncode } from \"../utils/base32.js\";\nconst name = \"algo\";\nconst coinType = 283;\nconst algoChecksum = utils.checksum(4, (data) => sha512_256(data).slice(-4));\nexport const encodeAlgoAddress = (source) => {\n const checksum = algoChecksum.encode(source);\n return base32UnpaddedEncode(checksum);\n};\nexport const decodeAlgoAddress = (source) => {\n const decoded = base32UnpaddedDecode(source);\n if (decoded.length !== 36)\n throw new Error(\"Unrecognised address format\");\n return algoChecksum.decode(decoded);\n};\nexport const algo = {\n name,\n coinType,\n encode: encodeAlgoAddress,\n decode: decodeAlgoAddress,\n};\n//# sourceMappingURL=algo.js.map","import { base64urlnopad } from \"@scure/base\";\nconst name = \"ar\";\nconst coinType = 472;\nexport const encodeArAddress = base64urlnopad.encode;\nexport const decodeArAddress = base64urlnopad.decode;\nexport const ar = {\n name,\n coinType,\n encode: encodeArAddress,\n decode: decodeArAddress,\n};\n//# sourceMappingURL=ar.js.map","const name = \"ardr\";\nconst coinType = 16754;\nconst prefix = \"ARDOR\";\nconst alphabet = \"23456789ABCDEFGHJKLMNPQRSTUVWXYZ\";\nconst codewordMap = new Uint8Array([\n 3, 2, 1, 0, 7, 6, 5, 4, 13, 14, 15, 16, 12, 8, 9, 10, 11,\n]);\nconst glog = [\n 0, 0, 1, 18, 2, 5, 19, 11, 3, 29, 6, 27, 20, 8, 12, 23, 4, 10, 30, 17, 7, 22,\n 28, 26, 21, 25, 9, 16, 13, 14, 24, 15,\n];\nconst gexp = [\n 1, 2, 4, 8, 16, 5, 10, 20, 13, 26, 17, 7, 14, 28, 29, 31, 27, 19, 3, 6, 12,\n 24, 21, 15, 30, 25, 23, 11, 22, 9, 18, 1,\n];\nconst gmult = (a, b) => {\n if (a === 0 || b === 0)\n return 0;\n return gexp[(glog[a] + glog[b]) % 31];\n};\nconst ardrChecksum = (source) => {\n let sum = 0;\n for (let i = 1; i < 5; i++) {\n let t = 0;\n for (let j = 0; j < 31; j++) {\n if (j > 12 && j < 27)\n continue;\n let pos = j;\n if (j > 26)\n pos -= 14;\n t ^= gmult(source[pos], gexp[(i * j) % 31]);\n }\n sum |= t;\n }\n return sum === 0;\n};\nexport const encodeArdrAddress = (source) => {\n const chars = [];\n for (let i = 0, j = 0; i < source.length; i++) {\n const byte = source[i];\n const writeIndex = codewordMap[j++];\n chars[writeIndex] = alphabet[16 * ((byte & 0xf0) >> 4) + (byte & 0x0f)];\n }\n return `${prefix}-${chars.slice(0, 4).join(\"\")}-${chars\n .slice(4, 8)\n .join(\"\")}-${chars.slice(8, 12).join(\"\")}-${chars.slice(12, 17).join(\"\")}`;\n};\nexport const decodeArdrAddress = (source) => {\n if (!source.startsWith(`${prefix}-`) || source.length !== 26)\n throw new Error(\"Unrecognised address format\");\n const joined = source.slice(6);\n const codeword = new Uint8Array([\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ]);\n let dashCount = 0;\n for (let i = 0, j = 0; i < 20; i++) {\n const char = joined[i];\n if (char === \"-\") {\n dashCount++;\n continue;\n }\n const pos = alphabet.indexOf(char);\n if (pos === -1)\n throw new Error(\"Unrecognised address format\");\n const writeIndex = codewordMap[j++];\n codeword[writeIndex] = pos;\n }\n if (!ardrChecksum(codeword))\n throw new Error(\"Unrecognised address format\");\n return codeword;\n};\nexport const ardr = {\n name,\n coinType,\n encode: encodeArdrAddress,\n decode: decodeArdrAddress,\n};\n//# sourceMappingURL=ardr.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"ark\";\nconst coinType = 111;\nexport const encodeArkAddress = base58CheckEncode;\nexport const decodeArkAddress = (source) => {\n const decoded = base58CheckDecode(source);\n if (decoded[0] !== 23)\n throw new Error(\"Invalid address\");\n return decoded;\n};\nexport const ark = {\n name,\n coinType,\n encode: encodeArkAddress,\n decode: decodeArkAddress,\n};\n//# sourceMappingURL=ark.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"atom\";\nconst coinType = 118;\nexport const encodeAtomAddress = createBech32Encoder(\"cosmos\");\nexport const decodeAtomAddress = createBech32Decoder(\"cosmos\");\nexport const atom = {\n name,\n coinType,\n encode: encodeAtomAddress,\n decode: decodeAtomAddress,\n};\n//# sourceMappingURL=atom.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"avax\";\nconst coinType = 9000;\nconst hrp = \"avax\";\nconst decodeBech32 = createBech32Decoder(hrp);\nexport const encodeAvaxAddress = createBech32Encoder(hrp);\nexport const decodeAvaxAddress = (source) => {\n let address;\n const [id, possibleAddr] = source.split(\"-\");\n if (!possibleAddr) {\n address = id;\n }\n else {\n address = possibleAddr;\n }\n return decodeBech32(address);\n};\nexport const avax = {\n name,\n coinType,\n encode: encodeAvaxAddress,\n decode: decodeAvaxAddress,\n};\n//# sourceMappingURL=avax.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"./base58.js\";\nimport { createBech32SegwitDecoder, createBech32SegwitEncoder, } from \"./bech32.js\";\nexport const createBitcoinDecoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const decodeBech32 = createBech32SegwitDecoder(hrp);\n const decodeBase58 = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\n return (source) => {\n if (source.toLowerCase().startsWith(hrp + \"1\")) {\n return decodeBech32(source);\n }\n return decodeBase58(source);\n };\n};\nexport const createBitcoinEncoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const encodeBech32 = createBech32SegwitEncoder(hrp);\n const encodeBase58 = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\n return (source) => {\n try {\n return encodeBase58(source);\n }\n catch {\n return encodeBech32(source);\n }\n };\n};\n//# sourceMappingURL=bitcoin.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"bcd\";\nconst coinType = 999;\nconst hrp = \"bcd\";\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeBcdAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeBcdAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const bcd = {\n name,\n coinType,\n encode: encodeBcdAddress,\n decode: decodeBcdAddress,\n};\n//# sourceMappingURL=bcd.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nconst prefix = \"bitcoincash\";\nconst prefixBytes = new Uint8Array([2, 9, 20, 3, 15, 9, 14, 3, 1, 19, 8, 0]); // bitcoincash + 0x00\nconst hashSize = [160, 192, 224, 256, 320, 384, 448, 512];\nconst hashSizeLookup = Object.fromEntries(hashSize.map((size, index) => [size, index]));\nconst radix5 = utils.radix2(5);\nconst bchBase32 = utils.chain(utils.alphabet(\"qpzry9x8gf2tvdw0s3jn54khce6mua7l\"), utils.join(\"\"));\nconst checksumToUint5Array = (checksum) => {\n const result = new Uint8Array(8);\n for (let i = 0; i < 8; i++) {\n result[7 - i] = Number(checksum & 31n);\n checksum = checksum >> 5n;\n }\n return result;\n};\nconst polymod = (data) => {\n const GENERATOR = [\n 0x98f2bc8e61n,\n 0x79b76d99e2n,\n 0xf33e5fb3c4n,\n 0xae2eabe2a8n,\n 0x1e4f43e470n,\n ];\n let checksum = 1n;\n for (var i = 0; i < data.length; ++i) {\n const value = data[i];\n const topBits = checksum >> 35n;\n checksum = ((checksum & 0x07ffffffffn) << 5n) ^ BigInt(value);\n for (var j = 0; j < GENERATOR.length; ++j) {\n if (((topBits >> BigInt(j)) & 1n) === 1n) {\n checksum = checksum ^ GENERATOR[j];\n }\n }\n }\n return checksum ^ 1n;\n};\nconst normaliseBchAddress = (str) => {\n const lowercased = str.toLowerCase();\n if (str === lowercased)\n return lowercased;\n const uppercased = str.toUpperCase();\n if (str === uppercased)\n return lowercased;\n throw new Error(\"Unrecognised address format\");\n};\nconst isChecksumValid = (source) => {\n const checksumData = concatBytes(prefixBytes, new Uint8Array(source));\n return polymod(checksumData) === 0n;\n};\nexport const encodeBchAddressWithVersion = (version, source) => {\n const versionByte = new Uint8Array([\n version + hashSizeLookup[source.length * 8],\n ]);\n const radix5Encoded = radix5.encode(concatBytes(versionByte, source));\n const payloadData = new Uint8Array(radix5Encoded);\n const checksumData = concatBytes(prefixBytes, payloadData, new Uint8Array(8));\n const checksum = checksumToUint5Array(polymod(checksumData));\n const payload = concatBytes(payloadData, checksum);\n return `${prefix}:${bchBase32.encode(Array.from(payload))}`;\n};\nexport const decodeBchAddressToTypeAndHash = (source) => {\n const normalised = normaliseBchAddress(source);\n let [prefix, payload] = normalised.split(\":\");\n if (!payload)\n payload = prefix;\n else if (prefix !== \"bitcoincash\")\n throw new Error(\"Unrecognised address format\");\n const base32Decoded = bchBase32.decode(payload);\n if (!isChecksumValid(base32Decoded))\n throw new Error(\"Invalid checksum\");\n const [versionByte, ...hash] = radix5.decode(Array.from(base32Decoded.slice(0, -8)));\n if (hashSize[versionByte & 7] !== hash.length * 8)\n throw new Error(\"Unrecognised address format\");\n const type = versionByte & 120;\n return {\n type,\n hash,\n };\n};\n//# sourceMappingURL=bch.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { createBase58VersionedDecoder } from \"../utils/base58.js\";\nimport { decodeBchAddressToTypeAndHash, encodeBchAddressWithVersion, } from \"../utils/bch.js\";\nconst name = \"bch\";\nconst coinType = 145;\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nconst bchBase58Decode = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const encodeBchAddress = (source) => {\n if (source[0] === 0x76) {\n if (source[1] !== 0xa9 ||\n source[source.length - 2] !== 0x88 ||\n source[source.length - 1] !== 0xac)\n throw new Error(\"Unrecognised address format\");\n return encodeBchAddressWithVersion(0, source.slice(3, 3 + source[2]));\n }\n if (source[0] === 0xa9) {\n if (source[source.length - 1] !== 0x87)\n throw new Error(\"Unrecognised address format\");\n return encodeBchAddressWithVersion(8, source.slice(2, 2 + source[1]));\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const decodeBchAddress = (source) => {\n try {\n return bchBase58Decode(source);\n }\n catch {\n const { type, hash } = decodeBchAddressToTypeAndHash(source);\n if (type === 0)\n return concatBytes(new Uint8Array([0x76, 0xa9, 0x14]), new Uint8Array(hash), new Uint8Array([0x88, 0xac]));\n if (type === 8)\n return concatBytes(new Uint8Array([0xa9, 0x14]), new Uint8Array(hash), new Uint8Array([0x87]));\n throw new Error(\"Unrecognised address format\");\n }\n};\nexport const bch = {\n name,\n coinType,\n encode: encodeBchAddress,\n decode: decodeBchAddress,\n};\n//# sourceMappingURL=bch.js.map","/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createHasher, createXOFer, Hash, swap32IfBE, toBytes, u32 } from \"./utils.js\";\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI = [];\nconst SHA3_ROTL = [];\nconst _SHA3_IOTA = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n clean(B);\n}\n/** Keccak sponge function. */\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n this.enableXOF = false;\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n // Can be passed from user as dkLen\n anumber(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n // 0 < blockLen < 200\n if (!(0 < blockLen && blockLen < 200))\n throw new Error('only keccak-f1600 function is supported');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n clone() {\n return this._cloneInto();\n }\n keccak() {\n swap32IfBE(this.state32);\n keccakP(this.state32, this.rounds);\n swap32IfBE(this.state32);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { blockLen, state } = this;\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n aexists(this, false);\n abytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n anumber(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n aoutput(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n clean(this.state);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => createHasher(() => new Keccak(blockLen, suffix, outputLen));\n/** SHA3-224 hash function. */\nexport const sha3_224 = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256 = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384 = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512 = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n/** keccak-224 hash function. */\nexport const keccak_224 = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256 = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384 = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512 = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\nconst genShake = (suffix, blockLen, outputLen) => createXOFer((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128 = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256 = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n//# sourceMappingURL=sha3.js.map","import { base58xmr } from \"@scure/base\";\nconst name = \"xmr\";\nconst coinType = 128;\nexport const encodeXmrAddress = base58xmr.encode;\nexport const decodeXmrAddress = base58xmr.decode;\nexport const xmr = {\n name,\n coinType,\n encode: encodeXmrAddress,\n decode: decodeXmrAddress,\n};\n//# sourceMappingURL=xmr.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nimport { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"bcn\";\nconst coinType = 204;\nconst bcnChecksum = utils.checksum(4, keccak_256);\nexport const encodeBcnAddress = (source) => {\n const checksum = keccak_256(source).slice(0, 4);\n return encodeXmrAddress(concatBytes(source, checksum));\n};\nexport const decodeBcnAddress = (source) => {\n const decoded = decodeXmrAddress(source);\n const tag = decoded.slice(0, -68);\n if (decoded.length < 68 ||\n (!equalBytes(tag, new Uint8Array([0x06])) &&\n !equalBytes(tag, new Uint8Array([0xce, 0xf6, 0x22]))))\n throw new Error(\"Unrecognised address format\");\n return bcnChecksum.decode(decoded);\n};\nexport const bcn = {\n name,\n coinType,\n encode: encodeBcnAddress,\n decode: decodeBcnAddress,\n};\n//# sourceMappingURL=bcn.js.map","import { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"bdx\";\nconst coinType = 570;\nexport const encodeBdxAddress = encodeXmrAddress;\nexport const decodeBdxAddress = decodeXmrAddress;\nexport const bdx = {\n name,\n coinType,\n encode: encodeBdxAddress,\n decode: decodeBdxAddress,\n};\n//# sourceMappingURL=bdx.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"bnb\";\nconst coinType = 714;\nconst hrp = \"bnb\";\nexport const encodeBnbAddress = createBech32Encoder(hrp);\nexport const decodeBnbAddress = createBech32Decoder(hrp);\nexport const bnb = {\n name,\n coinType,\n encode: encodeBnbAddress,\n decode: decodeBnbAddress,\n};\n//# sourceMappingURL=bnb.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"bps\";\nconst coinType = 576;\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeBpsAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeBpsAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const bps = {\n name,\n coinType,\n encode: encodeBpsAddress,\n decode: decodeBpsAddress,\n};\n//# sourceMappingURL=bps.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"bsv\";\nconst coinType = 236;\nexport const encodeBsvAddress = (source) => base58CheckEncode(concatBytes(new Uint8Array([0x00]), source));\nexport const decodeBsvAddress = (source) => {\n const decoded = base58CheckDecode(source);\n if (decoded.length !== 21)\n throw new Error(\"Unrecognised address format\");\n const version = decoded[0];\n if (version !== 0x00)\n throw new Error(\"Unrecognised address format\");\n return decoded.slice(1);\n};\nexport const bsv = {\n name,\n coinType,\n encode: encodeBsvAddress,\n decode: decodeBsvAddress,\n};\n//# sourceMappingURL=bsv.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"btc\";\nconst coinType = 0;\nconst hrp = \"bc\";\nconst p2pkhVersions = [new Uint8Array([0x00])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeBtcAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeBtcAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const btc = {\n name,\n coinType,\n encode: encodeBtcAddress,\n decode: decodeBtcAddress,\n};\n//# sourceMappingURL=btc.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"btg\";\nconst coinType = 156;\nconst hrp = \"btg\";\nconst p2pkhVersions = [new Uint8Array([0x26])];\nconst p2shVersions = [new Uint8Array([0x17])];\nexport const encodeBtgAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeBtgAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const btg = {\n name,\n coinType,\n encode: encodeBtgAddress,\n decode: decodeBtgAddress,\n};\n//# sourceMappingURL=btg.js.map","import { createBech32SegwitDecoder, createBech32SegwitEncoder, } from \"../utils/bech32.js\";\nconst name = \"btm\";\nconst coinType = 153;\nconst hrp = \"bm\";\nexport const encodeBtmAddress = createBech32SegwitEncoder(hrp);\nexport const decodeBtmAddress = createBech32SegwitDecoder(hrp);\nexport const btm = {\n name,\n coinType,\n encode: encodeBtmAddress,\n decode: decodeBtmAddress,\n};\n//# sourceMappingURL=btm.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"bts\";\nconst coinType = 308;\nconst prefix = \"BTS\";\nexport const encodeBtsAddress = createEosEncoder(prefix);\nexport const decodeBtsAddress = createEosDecoder(prefix);\nexport const bts = {\n name,\n coinType,\n encode: encodeBtsAddress,\n decode: decodeBtsAddress,\n};\n//# sourceMappingURL=bts.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"cca\";\nconst coinType = 489;\nconst p2pkhVersions = [new Uint8Array([0x0b])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeCcaAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeCcaAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const cca = {\n name,\n coinType,\n encode: encodeCcaAddress,\n decode: decodeCcaAddress,\n};\n//# sourceMappingURL=cca.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"ccxx\";\nconst coinType = 571;\nconst hrp = \"ccx\";\nconst p2pkhVersions = [new Uint8Array([0x89])];\nconst p2shVersions = [new Uint8Array([0x4b]), new Uint8Array([0x05])];\nexport const encodeCcxxAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeCcxxAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const ccxx = {\n name,\n coinType,\n encode: encodeCcxxAddress,\n decode: decodeCcxxAddress,\n};\n//# sourceMappingURL=ccxx.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { bytesToHex, hexToBytes, stringToBytes } from \"./bytes.js\";\nexport const stripHexPrefix = (str) => str.startsWith(\"0x\") ? str.slice(2) : str;\nexport const rawChecksumAddress = ({ address, hash, length, }) => {\n for (let i = 0; i < length; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && address[i]) {\n address[i] = address[i].toUpperCase();\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && address[i + 1]) {\n address[i + 1] = address[i + 1].toUpperCase();\n }\n }\n return `0x${address.join(\"\")}`;\n};\nexport function checksumAddress(address_, chainId) {\n const hexAddress = chainId\n ? `${chainId}${address_.toLowerCase()}`\n : address_.substring(2).toLowerCase();\n const hash = keccak_256(stringToBytes(hexAddress));\n const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split(\"\");\n return rawChecksumAddress({ address, hash, length: 40 });\n}\nexport function isAddress(address) {\n return /^0x[a-fA-F0-9]{40}$/.test(address);\n}\nexport function isValidChecksumAddress(address, chainId) {\n if (!isAddress(address))\n return false;\n if (address === checksumAddress(address, chainId))\n return true;\n const prefixlessAddress = stripHexPrefix(address);\n // all lowercase\n if (prefixlessAddress.toLowerCase() === prefixlessAddress)\n return true;\n // all uppercase\n if (prefixlessAddress.toUpperCase() === prefixlessAddress)\n return true;\n return false;\n}\nexport const createHexChecksummedEncoder = (chainId) => (source) => checksumAddress(bytesToHex(source), chainId);\nexport const createHexChecksummedDecoder = (chainId) => (source) => {\n if (!isValidChecksumAddress(source, chainId)) {\n throw new Error(\"Unrecognised address format\");\n }\n return hexToBytes(source);\n};\n//# sourceMappingURL=hex.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"celoLegacy\";\nconst coinType = 52752;\nexport const encodeCeloLegacyAddress = createHexChecksummedEncoder();\nexport const decodeCeloLegacyAddress = createHexChecksummedDecoder();\nexport const celoLegacy = {\n name,\n coinType,\n encode: encodeCeloLegacyAddress,\n decode: decodeCeloLegacyAddress,\n};\n//# sourceMappingURL=celoLegacy.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"ckb\";\nconst coinType = 309;\nconst hrp = \"ckb\";\nexport const encodeCkbAddress = createBech32Encoder(hrp);\nexport const decodeCkbAddress = createBech32Decoder(hrp);\nexport const ckb = {\n name,\n coinType,\n encode: encodeCkbAddress,\n decode: decodeCkbAddress,\n};\n//# sourceMappingURL=ckb.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"cloLegacy\";\nconst coinType = 820;\nexport const encodeCloLegacyAddress = createHexChecksummedEncoder();\nexport const decodeCloLegacyAddress = createHexChecksummedDecoder();\nexport const cloLegacy = {\n name,\n coinType,\n encode: encodeCloLegacyAddress,\n decode: decodeCloLegacyAddress,\n};\n//# sourceMappingURL=cloLegacy.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"dash\";\nconst coinType = 5;\nconst p2pkhVersions = [new Uint8Array([0x4c])];\nconst p2shVersions = [new Uint8Array([0x10])];\nexport const encodeDashAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeDashAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const dash = {\n name,\n coinType,\n encode: encodeDashAddress,\n decode: decodeDashAddress,\n};\n//# sourceMappingURL=dash.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"dcr\";\nconst coinType = 42;\nexport const encodeDcrAddress = base58UncheckedEncode;\nexport const decodeDcrAddress = base58UncheckedDecode;\nexport const dcr = {\n name,\n coinType,\n encode: encodeDcrAddress,\n decode: decodeDcrAddress,\n};\n//# sourceMappingURL=dcr.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"dgb\";\nconst coinType = 20;\nconst hrp = \"dgb\";\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x3f])];\nexport const encodeDgbAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeDgbAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const dgb = {\n name,\n coinType,\n encode: encodeDgbAddress,\n decode: decodeDgbAddress,\n};\n//# sourceMappingURL=dgb.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"divi\";\nconst coinType = 301;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0xd])];\nexport const encodeDiviAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeDiviAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const divi = {\n name,\n coinType,\n encode: encodeDiviAddress,\n decode: decodeDiviAddress,\n};\n//# sourceMappingURL=divi.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"doge\";\nconst coinType = 3;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x16])];\nexport const encodeDogeAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeDogeAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const doge = {\n name,\n coinType,\n encode: encodeDogeAddress,\n decode: decodeDogeAddress,\n};\n//# sourceMappingURL=doge.js.map","/**\n * Internal helpers for blake hash.\n * @module\n */\nimport { rotr } from \"./utils.js\";\n/**\n * Internal blake variable.\n * For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1].\n */\n// prettier-ignore\nexport const BSIGMA = /* @__PURE__ */ Uint8Array.from([\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,\n 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,\n 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,\n 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,\n // Blake1, unused in others\n 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,\n 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,\n 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,\n 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,\n]);\n// Mixing function G splitted in two halfs\nexport function G1s(a, b, c, d, x) {\n a = (a + b + x) | 0;\n d = rotr(d ^ a, 16);\n c = (c + d) | 0;\n b = rotr(b ^ c, 12);\n return { a, b, c, d };\n}\nexport function G2s(a, b, c, d, x) {\n a = (a + b + x) | 0;\n d = rotr(d ^ a, 8);\n c = (c + d) | 0;\n b = rotr(b ^ c, 7);\n return { a, b, c, d };\n}\n//# sourceMappingURL=_blake.js.map","/**\n * blake2b (64-bit) & blake2s (8 to 32-bit) hash functions.\n * b could have been faster, but there is no fast u64 in js, so s is 1.5x faster.\n * @module\n */\nimport { BSIGMA, G1s, G2s } from \"./_blake.js\";\nimport { SHA256_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\n// prettier-ignore\nimport { abytes, aexists, anumber, aoutput, clean, createOptHasher, Hash, swap32IfBE, swap8IfBE, toBytes, u32 } from \"./utils.js\";\n// Same as SHA512_IV, but swapped endianness: LE instead of BE. iv[1] is iv[0], etc.\nconst B2B_IV = /* @__PURE__ */ Uint32Array.from([\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a,\n 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19,\n]);\n// Temporary buffer\nconst BBUF = /* @__PURE__ */ new Uint32Array(32);\n// Mixing function G splitted in two halfs\nfunction G1b(a, b, c, d, msg, x) {\n // NOTE: V is LE here\n const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n // v[a] = (v[a] + v[b] + x) | 0;\n let ll = u64.add3L(Al, Bl, Xl);\n Ah = u64.add3H(ll, Ah, Bh, Xh);\n Al = ll | 0;\n // v[d] = rotr(v[d] ^ v[a], 32)\n ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n ({ Dh, Dl } = { Dh: u64.rotr32H(Dh, Dl), Dl: u64.rotr32L(Dh, Dl) });\n // v[c] = (v[c] + v[d]) | 0;\n ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n // v[b] = rotr(v[b] ^ v[c], 24)\n ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n ({ Bh, Bl } = { Bh: u64.rotrSH(Bh, Bl, 24), Bl: u64.rotrSL(Bh, Bl, 24) });\n (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\nfunction G2b(a, b, c, d, msg, x) {\n // NOTE: V is LE here\n const Xl = msg[x], Xh = msg[x + 1]; // prettier-ignore\n let Al = BBUF[2 * a], Ah = BBUF[2 * a + 1]; // prettier-ignore\n let Bl = BBUF[2 * b], Bh = BBUF[2 * b + 1]; // prettier-ignore\n let Cl = BBUF[2 * c], Ch = BBUF[2 * c + 1]; // prettier-ignore\n let Dl = BBUF[2 * d], Dh = BBUF[2 * d + 1]; // prettier-ignore\n // v[a] = (v[a] + v[b] + x) | 0;\n let ll = u64.add3L(Al, Bl, Xl);\n Ah = u64.add3H(ll, Ah, Bh, Xh);\n Al = ll | 0;\n // v[d] = rotr(v[d] ^ v[a], 16)\n ({ Dh, Dl } = { Dh: Dh ^ Ah, Dl: Dl ^ Al });\n ({ Dh, Dl } = { Dh: u64.rotrSH(Dh, Dl, 16), Dl: u64.rotrSL(Dh, Dl, 16) });\n // v[c] = (v[c] + v[d]) | 0;\n ({ h: Ch, l: Cl } = u64.add(Ch, Cl, Dh, Dl));\n // v[b] = rotr(v[b] ^ v[c], 63)\n ({ Bh, Bl } = { Bh: Bh ^ Ch, Bl: Bl ^ Cl });\n ({ Bh, Bl } = { Bh: u64.rotrBH(Bh, Bl, 63), Bl: u64.rotrBL(Bh, Bl, 63) });\n (BBUF[2 * a] = Al), (BBUF[2 * a + 1] = Ah);\n (BBUF[2 * b] = Bl), (BBUF[2 * b + 1] = Bh);\n (BBUF[2 * c] = Cl), (BBUF[2 * c + 1] = Ch);\n (BBUF[2 * d] = Dl), (BBUF[2 * d + 1] = Dh);\n}\nfunction checkBlake2Opts(outputLen, opts = {}, keyLen, saltLen, persLen) {\n anumber(keyLen);\n if (outputLen < 0 || outputLen > keyLen)\n throw new Error('outputLen bigger than keyLen');\n const { key, salt, personalization } = opts;\n if (key !== undefined && (key.length < 1 || key.length > keyLen))\n throw new Error('key length must be undefined or 1..' + keyLen);\n if (salt !== undefined && salt.length !== saltLen)\n throw new Error('salt must be undefined or ' + saltLen);\n if (personalization !== undefined && personalization.length !== persLen)\n throw new Error('personalization must be undefined or ' + persLen);\n}\n/** Class, from which others are subclassed. */\nexport class BLAKE2 extends Hash {\n constructor(blockLen, outputLen) {\n super();\n this.finished = false;\n this.destroyed = false;\n this.length = 0;\n this.pos = 0;\n anumber(blockLen);\n anumber(outputLen);\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.buffer = new Uint8Array(blockLen);\n this.buffer32 = u32(this.buffer);\n }\n update(data) {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n // Main difference with other hashes: there is flag for last block,\n // so we cannot process current block before we know that there\n // is the next one. This significantly complicates logic and reduces ability\n // to do zero-copy processing\n const { blockLen, buffer, buffer32 } = this;\n const len = data.length;\n const offset = data.byteOffset;\n const buf = data.buffer;\n for (let pos = 0; pos < len;) {\n // If buffer is full and we still have input (don't process last block, same as blake2s)\n if (this.pos === blockLen) {\n swap32IfBE(buffer32);\n this.compress(buffer32, 0, false);\n swap32IfBE(buffer32);\n this.pos = 0;\n }\n const take = Math.min(blockLen - this.pos, len - pos);\n const dataOffset = offset + pos;\n // full block && aligned to 4 bytes && not last in input\n if (take === blockLen && !(dataOffset % 4) && pos + take < len) {\n const data32 = new Uint32Array(buf, dataOffset, Math.floor((len - pos) / 4));\n swap32IfBE(data32);\n for (let pos32 = 0; pos + blockLen < len; pos32 += buffer32.length, pos += blockLen) {\n this.length += blockLen;\n this.compress(data32, pos32, false);\n }\n swap32IfBE(data32);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n this.length += take;\n pos += take;\n }\n return this;\n }\n digestInto(out) {\n aexists(this);\n aoutput(out, this);\n const { pos, buffer32 } = this;\n this.finished = true;\n // Padding\n clean(this.buffer.subarray(pos));\n swap32IfBE(buffer32);\n this.compress(buffer32, 0, true);\n swap32IfBE(buffer32);\n const out32 = u32(out);\n this.get().forEach((v, i) => (out32[i] = swap8IfBE(v)));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n const { buffer, length, finished, destroyed, outputLen, pos } = this;\n to || (to = new this.constructor({ dkLen: outputLen }));\n to.set(...this.get());\n to.buffer.set(buffer);\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n // @ts-ignore\n to.outputLen = outputLen;\n return to;\n }\n clone() {\n return this._cloneInto();\n }\n}\nexport class BLAKE2b extends BLAKE2 {\n constructor(opts = {}) {\n const olen = opts.dkLen === undefined ? 64 : opts.dkLen;\n super(128, olen);\n // Same as SHA-512, but LE\n this.v0l = B2B_IV[0] | 0;\n this.v0h = B2B_IV[1] | 0;\n this.v1l = B2B_IV[2] | 0;\n this.v1h = B2B_IV[3] | 0;\n this.v2l = B2B_IV[4] | 0;\n this.v2h = B2B_IV[5] | 0;\n this.v3l = B2B_IV[6] | 0;\n this.v3h = B2B_IV[7] | 0;\n this.v4l = B2B_IV[8] | 0;\n this.v4h = B2B_IV[9] | 0;\n this.v5l = B2B_IV[10] | 0;\n this.v5h = B2B_IV[11] | 0;\n this.v6l = B2B_IV[12] | 0;\n this.v6h = B2B_IV[13] | 0;\n this.v7l = B2B_IV[14] | 0;\n this.v7h = B2B_IV[15] | 0;\n checkBlake2Opts(olen, opts, 64, 16, 16);\n let { key, personalization, salt } = opts;\n let keyLength = 0;\n if (key !== undefined) {\n key = toBytes(key);\n keyLength = key.length;\n }\n this.v0l ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n if (salt !== undefined) {\n salt = toBytes(salt);\n const slt = u32(salt);\n this.v4l ^= swap8IfBE(slt[0]);\n this.v4h ^= swap8IfBE(slt[1]);\n this.v5l ^= swap8IfBE(slt[2]);\n this.v5h ^= swap8IfBE(slt[3]);\n }\n if (personalization !== undefined) {\n personalization = toBytes(personalization);\n const pers = u32(personalization);\n this.v6l ^= swap8IfBE(pers[0]);\n this.v6h ^= swap8IfBE(pers[1]);\n this.v7l ^= swap8IfBE(pers[2]);\n this.v7h ^= swap8IfBE(pers[3]);\n }\n if (key !== undefined) {\n // Pad to blockLen and update\n const tmp = new Uint8Array(this.blockLen);\n tmp.set(key);\n this.update(tmp);\n }\n }\n // prettier-ignore\n get() {\n let { v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h } = this;\n return [v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h];\n }\n // prettier-ignore\n set(v0l, v0h, v1l, v1h, v2l, v2h, v3l, v3h, v4l, v4h, v5l, v5h, v6l, v6h, v7l, v7h) {\n this.v0l = v0l | 0;\n this.v0h = v0h | 0;\n this.v1l = v1l | 0;\n this.v1h = v1h | 0;\n this.v2l = v2l | 0;\n this.v2h = v2h | 0;\n this.v3l = v3l | 0;\n this.v3h = v3h | 0;\n this.v4l = v4l | 0;\n this.v4h = v4h | 0;\n this.v5l = v5l | 0;\n this.v5h = v5h | 0;\n this.v6l = v6l | 0;\n this.v6h = v6h | 0;\n this.v7l = v7l | 0;\n this.v7h = v7h | 0;\n }\n compress(msg, offset, isLast) {\n this.get().forEach((v, i) => (BBUF[i] = v)); // First half from state.\n BBUF.set(B2B_IV, 16); // Second half from IV.\n let { h, l } = u64.fromBig(BigInt(this.length));\n BBUF[24] = B2B_IV[8] ^ l; // Low word of the offset.\n BBUF[25] = B2B_IV[9] ^ h; // High word.\n // Invert all bits for last block\n if (isLast) {\n BBUF[28] = ~BBUF[28];\n BBUF[29] = ~BBUF[29];\n }\n let j = 0;\n const s = BSIGMA;\n for (let i = 0; i < 12; i++) {\n G1b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n G2b(0, 4, 8, 12, msg, offset + 2 * s[j++]);\n G1b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n G2b(1, 5, 9, 13, msg, offset + 2 * s[j++]);\n G1b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n G2b(2, 6, 10, 14, msg, offset + 2 * s[j++]);\n G1b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n G2b(3, 7, 11, 15, msg, offset + 2 * s[j++]);\n G1b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n G2b(0, 5, 10, 15, msg, offset + 2 * s[j++]);\n G1b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n G2b(1, 6, 11, 12, msg, offset + 2 * s[j++]);\n G1b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n G2b(2, 7, 8, 13, msg, offset + 2 * s[j++]);\n G1b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n G2b(3, 4, 9, 14, msg, offset + 2 * s[j++]);\n }\n this.v0l ^= BBUF[0] ^ BBUF[16];\n this.v0h ^= BBUF[1] ^ BBUF[17];\n this.v1l ^= BBUF[2] ^ BBUF[18];\n this.v1h ^= BBUF[3] ^ BBUF[19];\n this.v2l ^= BBUF[4] ^ BBUF[20];\n this.v2h ^= BBUF[5] ^ BBUF[21];\n this.v3l ^= BBUF[6] ^ BBUF[22];\n this.v3h ^= BBUF[7] ^ BBUF[23];\n this.v4l ^= BBUF[8] ^ BBUF[24];\n this.v4h ^= BBUF[9] ^ BBUF[25];\n this.v5l ^= BBUF[10] ^ BBUF[26];\n this.v5h ^= BBUF[11] ^ BBUF[27];\n this.v6l ^= BBUF[12] ^ BBUF[28];\n this.v6h ^= BBUF[13] ^ BBUF[29];\n this.v7l ^= BBUF[14] ^ BBUF[30];\n this.v7h ^= BBUF[15] ^ BBUF[31];\n clean(BBUF);\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer32);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n/**\n * Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2b = /* @__PURE__ */ createOptHasher((opts) => new BLAKE2b(opts));\n// prettier-ignore\nexport function compress(s, offset, msg, rounds, v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) {\n let j = 0;\n for (let i = 0; i < rounds; i++) {\n ({ a: v0, b: v4, c: v8, d: v12 } = G1s(v0, v4, v8, v12, msg[offset + s[j++]]));\n ({ a: v0, b: v4, c: v8, d: v12 } = G2s(v0, v4, v8, v12, msg[offset + s[j++]]));\n ({ a: v1, b: v5, c: v9, d: v13 } = G1s(v1, v5, v9, v13, msg[offset + s[j++]]));\n ({ a: v1, b: v5, c: v9, d: v13 } = G2s(v1, v5, v9, v13, msg[offset + s[j++]]));\n ({ a: v2, b: v6, c: v10, d: v14 } = G1s(v2, v6, v10, v14, msg[offset + s[j++]]));\n ({ a: v2, b: v6, c: v10, d: v14 } = G2s(v2, v6, v10, v14, msg[offset + s[j++]]));\n ({ a: v3, b: v7, c: v11, d: v15 } = G1s(v3, v7, v11, v15, msg[offset + s[j++]]));\n ({ a: v3, b: v7, c: v11, d: v15 } = G2s(v3, v7, v11, v15, msg[offset + s[j++]]));\n ({ a: v0, b: v5, c: v10, d: v15 } = G1s(v0, v5, v10, v15, msg[offset + s[j++]]));\n ({ a: v0, b: v5, c: v10, d: v15 } = G2s(v0, v5, v10, v15, msg[offset + s[j++]]));\n ({ a: v1, b: v6, c: v11, d: v12 } = G1s(v1, v6, v11, v12, msg[offset + s[j++]]));\n ({ a: v1, b: v6, c: v11, d: v12 } = G2s(v1, v6, v11, v12, msg[offset + s[j++]]));\n ({ a: v2, b: v7, c: v8, d: v13 } = G1s(v2, v7, v8, v13, msg[offset + s[j++]]));\n ({ a: v2, b: v7, c: v8, d: v13 } = G2s(v2, v7, v8, v13, msg[offset + s[j++]]));\n ({ a: v3, b: v4, c: v9, d: v14 } = G1s(v3, v4, v9, v14, msg[offset + s[j++]]));\n ({ a: v3, b: v4, c: v9, d: v14 } = G2s(v3, v4, v9, v14, msg[offset + s[j++]]));\n }\n return { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 };\n}\nconst B2S_IV = SHA256_IV;\nexport class BLAKE2s extends BLAKE2 {\n constructor(opts = {}) {\n const olen = opts.dkLen === undefined ? 32 : opts.dkLen;\n super(64, olen);\n // Internal state, same as SHA-256\n this.v0 = B2S_IV[0] | 0;\n this.v1 = B2S_IV[1] | 0;\n this.v2 = B2S_IV[2] | 0;\n this.v3 = B2S_IV[3] | 0;\n this.v4 = B2S_IV[4] | 0;\n this.v5 = B2S_IV[5] | 0;\n this.v6 = B2S_IV[6] | 0;\n this.v7 = B2S_IV[7] | 0;\n checkBlake2Opts(olen, opts, 32, 8, 8);\n let { key, personalization, salt } = opts;\n let keyLength = 0;\n if (key !== undefined) {\n key = toBytes(key);\n keyLength = key.length;\n }\n this.v0 ^= this.outputLen | (keyLength << 8) | (0x01 << 16) | (0x01 << 24);\n if (salt !== undefined) {\n salt = toBytes(salt);\n const slt = u32(salt);\n this.v4 ^= swap8IfBE(slt[0]);\n this.v5 ^= swap8IfBE(slt[1]);\n }\n if (personalization !== undefined) {\n personalization = toBytes(personalization);\n const pers = u32(personalization);\n this.v6 ^= swap8IfBE(pers[0]);\n this.v7 ^= swap8IfBE(pers[1]);\n }\n if (key !== undefined) {\n // Pad to blockLen and update\n abytes(key);\n const tmp = new Uint8Array(this.blockLen);\n tmp.set(key);\n this.update(tmp);\n }\n }\n get() {\n const { v0, v1, v2, v3, v4, v5, v6, v7 } = this;\n return [v0, v1, v2, v3, v4, v5, v6, v7];\n }\n // prettier-ignore\n set(v0, v1, v2, v3, v4, v5, v6, v7) {\n this.v0 = v0 | 0;\n this.v1 = v1 | 0;\n this.v2 = v2 | 0;\n this.v3 = v3 | 0;\n this.v4 = v4 | 0;\n this.v5 = v5 | 0;\n this.v6 = v6 | 0;\n this.v7 = v7 | 0;\n }\n compress(msg, offset, isLast) {\n const { h, l } = u64.fromBig(BigInt(this.length));\n // prettier-ignore\n const { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15 } = compress(BSIGMA, offset, msg, 10, this.v0, this.v1, this.v2, this.v3, this.v4, this.v5, this.v6, this.v7, B2S_IV[0], B2S_IV[1], B2S_IV[2], B2S_IV[3], l ^ B2S_IV[4], h ^ B2S_IV[5], isLast ? ~B2S_IV[6] : B2S_IV[6], B2S_IV[7]);\n this.v0 ^= v0 ^ v8;\n this.v1 ^= v1 ^ v9;\n this.v2 ^= v2 ^ v10;\n this.v3 ^= v3 ^ v11;\n this.v4 ^= v4 ^ v12;\n this.v5 ^= v5 ^ v13;\n this.v6 ^= v6 ^ v14;\n this.v7 ^= v7 ^ v15;\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer32);\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n/**\n * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS.\n * @param msg - message that would be hashed\n * @param opts - dkLen output length, key for MAC mode, salt, personalization\n */\nexport const blake2s = /* @__PURE__ */ createOptHasher((opts) => new BLAKE2s(opts));\n//# sourceMappingURL=blake2.js.map","/**\n * Blake2b hash function. Focuses on 64-bit platforms, but in JS speed different from Blake2s is negligible.\n * @module\n * @deprecated\n */\nimport { BLAKE2b as B2B, blake2b as b2b } from \"./blake2.js\";\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const BLAKE2b = B2B;\n/** @deprecated Use import from `noble/hashes/blake2` module */\nexport const blake2b = b2b;\n//# sourceMappingURL=blake2b.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base58UncheckedDecode, base58UncheckedEncode } from \"./base58.js\";\nconst prefixStringBytes = new Uint8Array([\n 0x53, 0x53, 0x35, 0x38, 0x50, 0x52, 0x45,\n]);\nconst dotChecksum = (sourceWithTypePrefix) => blake2b(concatBytes(prefixStringBytes, sourceWithTypePrefix)).slice(0, 2);\nexport const createDotAddressEncoder = (type) => (source) => {\n const typePrefix = new Uint8Array([type]);\n const sourceWithTypePrefix = concatBytes(typePrefix, source);\n const checksum = dotChecksum(sourceWithTypePrefix);\n return base58UncheckedEncode(concatBytes(sourceWithTypePrefix, checksum));\n};\nexport const createDotAddressDecoder = (type) => (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded[0] !== type)\n throw new Error(\"Unrecognized address format\");\n const checksum = decoded.slice(33, 35);\n const newChecksum = dotChecksum(decoded.slice(0, 33));\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognized address format\");\n return decoded.slice(1, 33);\n};\n//# sourceMappingURL=dot.js.map","import { createDotAddressDecoder, createDotAddressEncoder, } from \"../utils/dot.js\";\nconst name = \"dot\";\nconst coinType = 354;\nconst dotType = 0;\nexport const encodeDotAddress = createDotAddressEncoder(dotType);\nexport const decodeDotAddress = createDotAddressDecoder(dotType);\nexport const dot = {\n name,\n coinType,\n encode: encodeDotAddress,\n decode: decodeDotAddress,\n};\n//# sourceMappingURL=dot.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"egld\";\nconst coinType = 508;\nexport const encodeEgldAddress = createBech32Encoder(\"erd\");\nexport const decodeEgldAddress = createBech32Decoder(\"erd\");\nexport const egld = {\n name,\n coinType,\n encode: encodeEgldAddress,\n decode: decodeEgldAddress,\n};\n//# sourceMappingURL=egld.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"ela\";\nconst coinType = 2305;\nexport const encodeElaAddress = base58UncheckedEncode;\nexport const decodeElaAddress = base58UncheckedDecode;\nexport const ela = {\n name,\n coinType,\n encode: encodeElaAddress,\n decode: decodeElaAddress,\n};\n//# sourceMappingURL=ela.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"eos\";\nconst coinType = 194;\nconst prefix = \"EOS\";\nexport const encodeEosAddress = createEosEncoder(prefix);\nexport const decodeEosAddress = createEosDecoder(prefix);\nexport const eos = {\n name,\n coinType,\n encode: encodeEosAddress,\n decode: decodeEosAddress,\n};\n//# sourceMappingURL=eos.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"etcLegacy\";\nconst coinType = 61;\nexport const encodeEtcLegacyAddress = createHexChecksummedEncoder();\nexport const decodeEtcLegacyAddress = createHexChecksummedDecoder();\nexport const etcLegacy = {\n name,\n coinType,\n encode: encodeEtcLegacyAddress,\n decode: decodeEtcLegacyAddress,\n};\n//# sourceMappingURL=etcLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"eth\";\nconst coinType = 60;\nexport const encodeEthAddress = createHexChecksummedEncoder();\nexport const decodeEthAddress = createHexChecksummedDecoder();\nexport const eth = {\n name,\n coinType,\n encode: encodeEthAddress,\n decode: decodeEthAddress,\n};\n//# sourceMappingURL=eth.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nimport { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"etn\";\nconst coinType = 415;\nconst type = 18;\nconst etnChecksum = utils.checksum(4, keccak_256);\nexport const encodeEtnAddress = (source) => {\n const sourceWithType = concatBytes(new Uint8Array([type]), source);\n const checksummed = etnChecksum.encode(sourceWithType);\n return encodeXmrAddress(checksummed);\n};\nexport const decodeEtnAddress = (source) => {\n const decoded = decodeXmrAddress(source);\n if (decoded[0] !== 18)\n throw new Error(\"Unrecognised address format\");\n const checksummed = etnChecksum.decode(decoded);\n return checksummed.slice(1);\n};\nexport const etn = {\n name,\n coinType,\n encode: encodeEtnAddress,\n decode: decodeEtnAddress,\n};\n//# sourceMappingURL=etn.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"ewtLegacy\";\nconst coinType = 246;\nexport const encodeEwtLegacyAddress = createHexChecksummedEncoder();\nexport const decodeEwtLegacyAddress = createHexChecksummedDecoder();\nexport const ewtLegacy = {\n name,\n coinType,\n encode: encodeEwtLegacyAddress,\n decode: decodeEwtLegacyAddress,\n};\n//# sourceMappingURL=ewtLegacy.js.map","export const encodeLeb128 = (source) => {\n const bytes = [];\n do {\n let byte = Number(source & 127n);\n source >>= 7n;\n if (source != 0n) {\n byte = byte | 128;\n }\n bytes.push(byte);\n } while (source != 0n);\n return Uint8Array.from(bytes);\n};\nexport const decodeLeb128 = (source) => {\n let result = 0n;\n let shift = 0n;\n for (const byte of source) {\n result |= BigInt(byte & 127) << shift;\n if ((byte & 128) === 0)\n break;\n shift += 7n;\n }\n return result;\n};\n//# sourceMappingURL=leb128.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base32UnpaddedDecode, base32UnpaddedEncode } from \"../utils/base32.js\";\nimport { decodeLeb128, encodeLeb128 } from \"../utils/leb128.js\";\nconst name = \"fil\";\nconst coinType = 461;\nconst validateFilAddress = (address) => {\n if (address.length < 3)\n return false;\n if (address[0] !== \"f\")\n return false;\n if (address[1] === \"0\") {\n if (address.length > 22)\n return false;\n }\n else if (address[1] === \"1\" || address[1] === \"2\") {\n if (address.length !== 41)\n return false;\n }\n else if (address[1] === \"3\") {\n if (address.length !== 86)\n return false;\n }\n else {\n return false;\n }\n return true;\n};\nconst filChecksum = (source) => blake2b(source, { dkLen: 4 });\nexport const encodeFilAddress = (source) => {\n const payload = source.slice(1);\n const protocol = source[0];\n if (protocol === 0) {\n const decoded = decodeLeb128(payload);\n return `f${protocol}${decoded}`;\n }\n const checksum = blake2b(source, { dkLen: 4 });\n const bytes = concatBytes(payload, checksum);\n const decoded = base32UnpaddedEncode(bytes).toLowerCase();\n return `f${protocol}${decoded}`;\n};\nexport const decodeFilAddress = (source) => {\n if (!validateFilAddress(source))\n throw new Error(\"Unrecognised address format\");\n const protocol = parseInt(source[1], 10);\n const protocolByte = new Uint8Array([protocol]);\n const encoded = source.slice(2);\n if (protocol === 0) {\n return concatBytes(protocolByte, encodeLeb128(BigInt(encoded)));\n }\n const payloadWithChecksum = base32UnpaddedDecode(encoded.toUpperCase());\n const payload = payloadWithChecksum.slice(0, -4);\n const checksum = payloadWithChecksum.slice(-4);\n const decoded = concatBytes(protocolByte, payload);\n const newChecksum = filChecksum(decoded);\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const fil = {\n name,\n coinType,\n encode: encodeFilAddress,\n decode: decodeFilAddress,\n};\n//# sourceMappingURL=fil.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"fio\";\nconst coinType = 235;\nconst prefix = \"FIO\";\nexport const encodeFioAddress = createEosEncoder(prefix);\nexport const decodeFioAddress = createEosDecoder(prefix);\nexport const fio = {\n name,\n coinType,\n encode: encodeFioAddress,\n decode: decodeFioAddress,\n};\n//# sourceMappingURL=fio.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"firo\";\nconst coinType = 136;\nconst p2pkhVersions = [new Uint8Array([0x52])];\nconst p2shVersions = [new Uint8Array([0x07])];\nexport const encodeFiroAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeFiroAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const firo = {\n name,\n coinType,\n encode: encodeFiroAddress,\n decode: decodeFiroAddress,\n};\n//# sourceMappingURL=firo.js.map","// REF: https://github.com/ensdomains/address-encoder/pull/130#issuecomment-735935450\n// [n,k,d]-Linear code parameters\n// The linear code used in the account addressing is a [64,45,7]\n// It generates a [64,45]-code, which is the space of Flow account addresses.\n//\n// n is the size of the code words in bits,\n// which is also the size of the account addresses in bits.\nconst linearCodeN = 64;\n// Columns of the parity-check matrix H of the [64,45]-code used for Flow addresses.\n// H is a (n x p) matrix with coefficients in GF(2n, each column is converted into\n// a big endian integer representation of the GF(2) column vector.\n// H is used to verify a code word is a valid account address.\nconst parityCheckMatrixColumns = [\n 0x00001n,\n 0x00002n,\n 0x00004n,\n 0x00008n,\n 0x00010n,\n 0x00020n,\n 0x00040n,\n 0x00080n,\n 0x00100n,\n 0x00200n,\n 0x00400n,\n 0x00800n,\n 0x01000n,\n 0x02000n,\n 0x04000n,\n 0x08000n,\n 0x10000n,\n 0x20000n,\n 0x40000n,\n 0x7328dn,\n 0x6689an,\n 0x6112fn,\n 0x6084bn,\n 0x433fdn,\n 0x42aabn,\n 0x41951n,\n 0x233cen,\n 0x22a81n,\n 0x21948n,\n 0x1ef60n,\n 0x1decan,\n 0x1c639n,\n 0x1bdd8n,\n 0x1a535n,\n 0x194acn,\n 0x18c46n,\n 0x1632bn,\n 0x1529bn,\n 0x14a43n,\n 0x13184n,\n 0x12942n,\n 0x118c1n,\n 0x0f812n,\n 0x0e027n,\n 0x0d00en,\n 0x0c83cn,\n 0x0b01dn,\n 0x0a831n,\n 0x0982bn,\n 0x07034n,\n 0x0682an,\n 0x05819n,\n 0x03807n,\n 0x007d2n,\n 0x00727n,\n 0x0068en,\n 0x0067cn,\n 0x0059dn,\n 0x004ebn,\n 0x003b4n,\n 0x0036an,\n 0x002d9n,\n 0x001c7n,\n 0x0003fn,\n];\nexport function validateFlowAddress(address) {\n // Multiply the code word GF(2)-vector by the parity-check matrix\n let parity = 0n;\n for (let i = 0; i < linearCodeN; i++) {\n if ((address & 1n) === 1n) {\n parity = parity ^ parityCheckMatrixColumns[i];\n }\n address = address >> 1n;\n }\n return parity === 0n && address === 0n;\n}\n//# sourceMappingURL=flow.js.map","import { bytesToHex, hexWithoutPrefixToBytes } from \"../utils/bytes.js\";\nimport { validateFlowAddress } from \"../utils/flow.js\";\nconst name = \"flow\";\nconst coinType = 539;\nconst addressLength = 8;\nexport const encodeFlowAddress = (source) => {\n let bytes = new Uint8Array(addressLength);\n if (source.length > addressLength) {\n bytes.set(source.slice(source.length - addressLength));\n }\n else {\n bytes.set(source, addressLength - source.length);\n }\n return bytesToHex(bytes).toLowerCase();\n};\nexport const decodeFlowAddress = (source) => {\n if (!validateFlowAddress(BigInt(source)))\n throw new Error(\"Unrecognised address format\");\n return hexWithoutPrefixToBytes(source.startsWith(\"0x\") ? source.slice(2) : source);\n};\nexport const flow = {\n name,\n coinType,\n encode: encodeFlowAddress,\n decode: decodeFlowAddress,\n};\n//# sourceMappingURL=flow.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"./base58.js\";\nimport { createBech32Decoder, createBech32Encoder } from \"./bech32.js\";\n// changes from bitcoin.ts:\n// - no hrp suffix (hrp + \"1\")\n// - no segwit\nexport const createZcashDecoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const decodeBech32 = createBech32Decoder(hrp);\n const decodeBase58 = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\n return (source) => {\n if (source.toLowerCase().startsWith(hrp)) {\n return decodeBech32(source);\n }\n return decodeBase58(source);\n };\n};\nexport const createZcashEncoder = ({ hrp, p2pkhVersions, p2shVersions, }) => {\n const encodeBech32 = createBech32Encoder(hrp);\n const encodeBase58 = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\n return (source) => {\n try {\n return encodeBase58(source);\n }\n catch {\n return encodeBech32(source);\n }\n };\n};\n//# sourceMappingURL=zcash.js.map","import { createZcashDecoder, createZcashEncoder } from \"../utils/zcash.js\";\nconst name = \"flux\";\nconst coinType = 19167;\nconst hrp = \"za\";\nconst p2pkhVersions = [new Uint8Array([0x1c, 0xb8])];\nconst p2shVersions = [new Uint8Array([0x1c, 0xbd])];\nexport const encodeFluxAddress = createZcashEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeFluxAddress = createZcashDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const flux = {\n name,\n coinType,\n encode: encodeFluxAddress,\n decode: decodeFluxAddress,\n};\n//# sourceMappingURL=flux.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"ftmLegacy\";\nconst coinType = 1007;\nexport const encodeFtmLegacyAddress = createHexChecksummedEncoder();\nexport const decodeFtmLegacyAddress = createHexChecksummedDecoder();\nexport const ftmLegacy = {\n name,\n coinType,\n encode: encodeFtmLegacyAddress,\n decode: decodeFtmLegacyAddress,\n};\n//# sourceMappingURL=ftmLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"gnoLegacy\";\nconst coinType = 700;\nexport const encodeGnoLegacyAddress = createHexChecksummedEncoder();\nexport const decodeGnoLegacyAddress = createHexChecksummedDecoder();\nexport const gnoLegacy = {\n name,\n coinType,\n encode: encodeGnoLegacyAddress,\n decode: decodeGnoLegacyAddress,\n};\n//# sourceMappingURL=gnoLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"goLegacy\";\nconst coinType = 6060;\nexport const encodeGoLegacyAddress = createHexChecksummedEncoder();\nexport const decodeGoLegacyAddress = createHexChecksummedDecoder();\nexport const goLegacy = {\n name,\n coinType,\n encode: encodeGoLegacyAddress,\n decode: decodeGoLegacyAddress,\n};\n//# sourceMappingURL=goLegacy.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"grin\";\nconst coinType = 592;\nconst hrp = \"grin\";\nexport const encodeGrinAddress = createBech32Encoder(hrp);\nexport const decodeGrinAddress = createBech32Decoder(hrp);\nexport const grin = {\n name,\n coinType,\n encode: encodeGrinAddress,\n decode: decodeGrinAddress,\n};\n//# sourceMappingURL=grin.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"gxc\";\nconst coinType = 2303;\nconst prefix = \"GXC\";\nexport const encodeGxcAddress = createEosEncoder(prefix);\nexport const decodeGxcAddress = createEosDecoder(prefix);\nexport const gxc = {\n name,\n coinType,\n encode: encodeGxcAddress,\n decode: decodeGxcAddress,\n};\n//# sourceMappingURL=gxc.js.map","const name = \"hbar\";\nconst coinType = 3030;\nexport const encodeHbarAddress = (source) => {\n if (source.length !== 20)\n throw new Error(\"Unrecognised address format\");\n const view = new DataView(source.buffer, 0, 20);\n const shard = view.getUint32(0);\n const realm = view.getBigUint64(4);\n const account = view.getBigUint64(12, false);\n return [shard, realm, account].join(\".\");\n};\nexport const decodeHbarAddress = (source) => {\n const view = new DataView(new ArrayBuffer(20), 0, 20);\n const components = source.split(\".\");\n if (components.length !== 3)\n throw new Error(\"Unrecognised address format\");\n const shard = Number(components[0]);\n const realm = BigInt(components[1]);\n const account = BigInt(components[2]);\n view.setUint32(0, shard);\n view.setBigUint64(4, realm);\n view.setBigUint64(12, account);\n return new Uint8Array(view.buffer, 0, 20);\n};\nexport const hbar = {\n name,\n coinType,\n encode: encodeHbarAddress,\n decode: decodeHbarAddress,\n};\n//# sourceMappingURL=hbar.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"hive\";\nconst coinType = 825;\nconst prefix = \"STM\";\nexport const encodeHiveAddress = createEosEncoder(prefix);\nexport const decodeHiveAddress = createEosDecoder(prefix);\nexport const hive = {\n name,\n coinType,\n encode: encodeHiveAddress,\n decode: decodeHiveAddress,\n};\n//# sourceMappingURL=hive.js.map","import { bech32 } from \"@scure/base\";\nconst name = \"hns\";\nconst coinType = 5353;\nconst hrp = \"hs\";\nconst versionBytes = new Uint8Array([0x00]);\nexport const encodeHnsAddress = (source) => {\n if (source.length !== 20)\n throw new Error(\"Unrecognised address format\");\n return bech32.encode(hrp, [versionBytes[0], ...bech32.toWords(source)]);\n};\nexport const decodeHnsAddress = (source) => {\n const { prefix, words } = bech32.decode(source);\n if (prefix !== hrp)\n throw new Error(\"Unrecognised address format\");\n const version = words[0];\n const bytes = bech32.fromWords(words.slice(1));\n if (version !== versionBytes[0])\n throw new Error(\"Unrecognised address format\");\n if (bytes.length !== 20)\n throw new Error(\"Unrecognised address format\");\n return new Uint8Array(bytes);\n};\nexport const hns = {\n name,\n coinType,\n encode: encodeHnsAddress,\n decode: decodeHnsAddress,\n};\n//# sourceMappingURL=hns.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"hnt\";\nconst coinType = 904;\nexport const encodeHntAddress = (source) => {\n const sourceWithVersion = concatBytes(new Uint8Array([0x00]), source);\n return base58CheckEncode(sourceWithVersion);\n};\nexport const decodeHntAddress = (source) => {\n const decoded = base58CheckDecode(source);\n const version = decoded[0];\n if (version !== 0)\n throw new Error(\"Unrecognised address format\");\n return decoded.slice(1);\n};\nexport const hnt = {\n name,\n coinType,\n encode: encodeHntAddress,\n decode: decodeHntAddress,\n};\n//# sourceMappingURL=hnt.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { bytesToHexWithoutPrefix, hexWithoutPrefixToBytes, } from \"../utils/bytes.js\";\nconst name = \"icx\";\nconst coinType = 74;\nexport const encodeIcxAddress = (source) => {\n if (source.length !== 21)\n throw new Error(\"Invalid address length\");\n const type = source[0];\n if (type === 0x00)\n return `hx${bytesToHexWithoutPrefix(source.slice(1))}`;\n if (type === 0x01)\n return `cx${bytesToHexWithoutPrefix(source.slice(1))}`;\n throw new Error(\"Invalid address type\");\n};\nexport const decodeIcxAddress = (source) => {\n const prefix = source.slice(0, 2);\n const body = source.slice(2);\n if (prefix === \"hx\")\n return concatBytes(new Uint8Array([0x00]), hexWithoutPrefixToBytes(body));\n if (prefix === \"cx\")\n return concatBytes(new Uint8Array([0x01]), hexWithoutPrefixToBytes(body));\n throw new Error(\"Invalid address prefix\");\n};\nexport const icx = {\n name,\n coinType,\n encode: encodeIcxAddress,\n decode: decodeIcxAddress,\n};\n//# sourceMappingURL=icx.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"iost\";\nconst coinType = 291;\nexport const encodeIostAddress = base58UncheckedEncode;\nexport const decodeIostAddress = base58UncheckedDecode;\nexport const iost = {\n name,\n coinType,\n encode: encodeIostAddress,\n decode: decodeIostAddress,\n};\n//# sourceMappingURL=iost.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"iota\";\nconst coinType = 4218;\nconst hrp = \"iota\";\nconst version = new Uint8Array([0x00]);\nconst iotaBech32Encode = createBech32Encoder(hrp);\nconst iotaBech32Decode = createBech32Decoder(hrp);\nexport const encodeIotaAddress = (source) => {\n return iotaBech32Encode(concatBytes(version, source));\n};\nexport const decodeIotaAddress = (source) => {\n const decoded = iotaBech32Decode(source);\n return decoded.slice(1);\n};\nexport const iota = {\n name,\n coinType,\n encode: encodeIotaAddress,\n decode: decodeIotaAddress,\n};\n//# sourceMappingURL=iota.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"iotx\";\nconst coinType = 304;\nconst hrp = \"io\";\nexport const encodeIotxAddress = createBech32Encoder(hrp);\nexport const decodeIotxAddress = createBech32Decoder(hrp);\nexport const iotx = {\n name,\n coinType,\n encode: encodeIotxAddress,\n decode: decodeIotxAddress,\n};\n//# sourceMappingURL=iotx.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"iris\";\nconst coinType = 566;\nconst hrp = \"iaa\";\nexport const encodeIrisAddress = createBech32Encoder(hrp);\nexport const decodeIrisAddress = createBech32Decoder(hrp);\nexport const iris = {\n name,\n coinType,\n encode: encodeIrisAddress,\n decode: decodeIrisAddress,\n};\n//# sourceMappingURL=iris.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"kava\";\nconst coinType = 459;\nconst hrp = \"kava\";\nexport const encodeKavaAddress = createBech32Encoder(hrp);\nexport const decodeKavaAddress = createBech32Decoder(hrp);\nexport const kava = {\n name,\n coinType,\n encode: encodeKavaAddress,\n decode: decodeKavaAddress,\n};\n//# sourceMappingURL=kava.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"kmd\";\nconst coinType = 141;\nconst p2pkhVersions = [new Uint8Array([0x3c])];\nconst p2shVersions = [new Uint8Array([0x55])];\nexport const encodeKmdAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeKmdAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const kmd = {\n name,\n coinType,\n encode: encodeKmdAddress,\n decode: decodeKmdAddress,\n};\n//# sourceMappingURL=kmd.js.map","import { createDotAddressDecoder, createDotAddressEncoder, } from \"../utils/dot.js\";\nconst name = \"ksm\";\nconst coinType = 434;\nconst dotType = 2;\nexport const encodeKsmAddress = createDotAddressEncoder(dotType);\nexport const decodeKsmAddress = createDotAddressDecoder(dotType);\nexport const ksm = {\n name,\n coinType,\n encode: encodeKsmAddress,\n decode: decodeKsmAddress,\n};\n//# sourceMappingURL=ksm.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"lcc\";\nconst coinType = 192;\nconst hrp = \"lcc\";\nconst p2pkhVersions = [new Uint8Array([0x1c])];\nconst p2shVersions = [new Uint8Array([0x32]), new Uint8Array([0x05])];\nexport const encodeLccAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeLccAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const lcc = {\n name,\n coinType,\n encode: encodeLccAddress,\n decode: decodeLccAddress,\n};\n//# sourceMappingURL=lcc.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"lrg\";\nconst coinType = 568;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x0d])];\nexport const encodeLrgAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeLrgAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const lrg = {\n name,\n coinType,\n encode: encodeLrgAddress,\n decode: decodeLrgAddress,\n};\n//# sourceMappingURL=lrg.js.map","import { base10ToBytes, bytesToBase10 } from \"../utils/bytes.js\";\nconst name = \"lsk\";\nconst coinType = 134;\nexport const encodeLskAddress = (source) => {\n return `${bytesToBase10(source)}L`;\n};\nexport const decodeLskAddress = (source) => {\n if (source.length < 2 || source.length > 22)\n throw new Error(\"Invalid address length\");\n if (!source.endsWith(\"L\") || source.includes(\".\"))\n throw new Error(\"Invalid address format\");\n return base10ToBytes(source.slice(0, -1));\n};\nexport const lsk = {\n name,\n coinType,\n encode: encodeLskAddress,\n decode: decodeLskAddress,\n};\n//# sourceMappingURL=lsk.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"ltc\";\nconst coinType = 2;\nconst hrp = \"ltc\";\nconst p2pkhVersions = [new Uint8Array([0x30])];\nconst p2shVersions = [new Uint8Array([0x32]), new Uint8Array([0x05])];\nexport const encodeLtcAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeLtcAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const ltc = {\n name,\n coinType,\n encode: encodeLtcAddress,\n decode: decodeLtcAddress,\n};\n//# sourceMappingURL=ltc.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"luna\";\nconst coinType = 330;\nconst hrp = \"terra\";\nexport const encodeLunaAddress = createBech32Encoder(hrp);\nexport const decodeLunaAddress = createBech32Decoder(hrp);\nexport const luna = {\n name,\n coinType,\n encode: encodeLunaAddress,\n decode: decodeLunaAddress,\n};\n//# sourceMappingURL=luna.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"mona\";\nconst coinType = 22;\nconst hrp = \"mona\";\nconst p2pkhVersions = [new Uint8Array([0x32])];\nconst p2shVersions = [new Uint8Array([0x37]), new Uint8Array([0x05])];\nexport const encodeMonaAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeMonaAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const mona = {\n name,\n coinType,\n encode: encodeMonaAddress,\n decode: decodeMonaAddress,\n};\n//# sourceMappingURL=mona.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"mrx\";\nconst coinType = 326;\nexport const encodeMrxAddress = base58CheckEncode;\nexport const decodeMrxAddress = base58CheckDecode;\nexport const mrx = {\n name,\n coinType,\n encode: encodeMrxAddress,\n decode: decodeMrxAddress,\n};\n//# sourceMappingURL=mrx.js.map","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { utils } from \"@scure/base\";\nconst name = \"nano\";\nconst coinType = 165;\nconst convertRadixNano = (data, from, to) => {\n const leftover = (data.length * from) % to;\n const offset = leftover === 0 ? 0 : to - leftover;\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (let i = 0; i < data.length; i++) {\n const n = data[i];\n if (n >= 2 ** from)\n throw new Error(`convertRadixNano: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32)\n throw new Error(`convertRadixNano: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to) {\n res.push((carry >>> (pos + offset - to)) & mask);\n }\n }\n carry = (carry << (to - (pos + offset))) & mask;\n if (pos > 0)\n res.push(carry >>> 0);\n return res;\n};\nconst radixNano = {\n encode: (source) => convertRadixNano(source, 8, 5),\n decode: (source) => {\n const leftover = (source.length * 5) % 8;\n let result = convertRadixNano(source, 5, 8);\n if (leftover !== 0)\n result = result.slice(1);\n return Uint8Array.from(result);\n },\n};\nconst base32Nano = utils.chain(radixNano, utils.alphabet(\"13456789abcdefghijkmnopqrstuwxyz\"), utils.join(\"\"));\nexport const encodeNanoAddress = (source) => {\n const encoded = base32Nano.encode(source);\n const checksum = blake2b(source, { dkLen: 5 }).reverse();\n const checksumEncoded = base32Nano.encode(checksum);\n return `nano_${encoded}${checksumEncoded}`;\n};\nexport const decodeNanoAddress = (source) => {\n const decoded = base32Nano.decode(source.slice(5));\n return Uint8Array.from(decoded.slice(0, -5));\n};\nexport const nano = {\n name,\n coinType,\n encode: encodeNanoAddress,\n decode: decodeNanoAddress,\n};\n//# sourceMappingURL=nano.js.map","import { sha3_256 } from \"@noble/hashes/sha3\";\nimport { utils } from \"@scure/base\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"nas\";\nconst coinType = 2718;\nconst nasChecksum = utils.checksum(4, sha3_256);\nexport const encodeNasAddress = (source) => {\n const checksummed = nasChecksum.encode(source);\n return base58UncheckedEncode(checksummed);\n};\nexport const decodeNasAddress = (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded.length !== 26 ||\n decoded[0] !== 25 ||\n (decoded[1] !== 87 && decoded[1] !== 88))\n throw new Error(\"Unrecognised address format\");\n return nasChecksum.decode(decoded);\n};\nexport const nas = {\n name,\n coinType,\n encode: encodeNasAddress,\n decode: decodeNasAddress,\n};\n//# sourceMappingURL=nas.js.map","const nearAddressRegex = /^(([a-z\\d]+[\\-_])*[a-z\\d]+\\.)*([a-z\\d]+[\\-_])*[a-z\\d]+$/;\nexport const validateNearAddress = (address) => {\n if (address.length < 2 || address.length > 64)\n return false;\n if (!nearAddressRegex.test(address))\n return false;\n return true;\n};\n//# sourceMappingURL=near.js.map","import { bytesToString, stringToBytes } from \"../utils/bytes.js\";\nimport { validateNearAddress } from \"../utils/near.js\";\nconst name = \"near\";\nconst coinType = 397;\nexport const encodeNearAddress = (source) => {\n const encoded = bytesToString(source);\n if (!validateNearAddress(encoded))\n throw new Error(\"Unrecognised address format\");\n return encoded;\n};\nexport const decodeNearAddress = (source) => {\n if (!validateNearAddress(source))\n throw new Error(\"Unrecognised address format\");\n return stringToBytes(source);\n};\nexport const near = {\n name,\n coinType,\n encode: encodeNearAddress,\n decode: decodeNearAddress,\n};\n//# sourceMappingURL=near.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"neo\";\nconst coinType = 888;\nexport const encodeNeoAddress = base58CheckEncode;\nexport const decodeNeoAddress = base58CheckDecode;\nexport const neo = {\n name,\n coinType,\n encode: encodeNeoAddress,\n decode: decodeNeoAddress,\n};\n//# sourceMappingURL=neo.js.map","import { utils } from \"@scure/base\";\nconst name = \"nim\";\nconst coinType = 242;\nconst CCODE = \"NQ\";\nconst ibanCheck = (data) => {\n const num = data\n .toUpperCase()\n .split(\"\")\n .map((c) => {\n const code = c.charCodeAt(0);\n if (code >= 48 && code <= 57) {\n return c;\n }\n else {\n return (code - 55).toString();\n }\n })\n .join(\"\");\n let tmp = \"\";\n for (let i = 0; i < Math.ceil(num.length / 6); i++) {\n const a = num.slice(i * 6, i * 6 + 6);\n tmp = (parseInt(tmp + a, 10) % 97).toString();\n }\n return parseInt(tmp, 10);\n};\nconst nimChecksum = (source) => {\n return (\"00\" + (98 - ibanCheck(source + CCODE + \"00\"))).slice(-2);\n};\nconst base32Nim = utils.chain(utils.radix2(5), utils.alphabet(\"0123456789ABCDEFGHJKLMNPQRSTUVXY\"), utils.padding(5), utils.join(\"\"));\nexport const encodeNimAddress = (source) => {\n const base32Part = base32Nim.encode(source);\n const checksummed = nimChecksum(base32Part);\n return `${CCODE}${checksummed}${base32Part}`.replace(/.{4}/g, \"$& \").trim();\n};\nexport const decodeNimAddress = (source) => {\n if (!source.startsWith(CCODE))\n throw new Error(\"Unrecognised address format\");\n const noWhitespace = source.replace(/ /g, \"\");\n const checksum = noWhitespace.slice(2, 4);\n const base32Part = noWhitespace.slice(4);\n if (checksum !== nimChecksum(base32Part))\n throw new Error(\"Unrecognised address format\");\n return base32Nim.decode(base32Part);\n};\nexport const nim = {\n name,\n coinType,\n encode: encodeNimAddress,\n decode: decodeNimAddress,\n};\n//# sourceMappingURL=nim.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"nmc\";\nconst coinType = 7;\nexport const encodeNmcAddress = base58CheckEncode;\nexport const decodeNmcAddress = base58CheckDecode;\nexport const nmc = {\n name,\n coinType,\n encode: encodeNmcAddress,\n decode: decodeNmcAddress,\n};\n//# sourceMappingURL=nmc.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"nostr\";\nconst coinType = 1237;\nconst hrp = \"npub\";\nexport const encodeNostrAddress = createBech32Encoder(hrp);\nexport const decodeNostrAddress = createBech32Decoder(hrp);\nexport const nostr = {\n name,\n coinType,\n encode: encodeNostrAddress,\n decode: decodeNostrAddress,\n};\n//# sourceMappingURL=nostr.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"nrgLegacy\";\nconst coinType = 9797;\nexport const encodeNrgLegacyAddress = createHexChecksummedEncoder();\nexport const decodeNrgLegacyAddress = createHexChecksummedDecoder();\nexport const nrgLegacy = {\n name,\n coinType,\n encode: encodeNrgLegacyAddress,\n decode: decodeNrgLegacyAddress,\n};\n//# sourceMappingURL=nrgLegacy.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"nuls\";\nconst coinType = 8964;\nconst prefixReference = [\"a\", \"b\", \"c\", \"d\", \"e\"];\nconst decodePrefix = (source) => {\n for (let i = 0; i < source.length; i++) {\n const value = source.charCodeAt(i);\n if (value >= 97) {\n return source.slice(i + 1);\n }\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const encodeNulsAddress = (source) => {\n const chainId = (source[0] & 0xff) | ((source[1] & 0xff) << 8);\n const payload = new Uint8Array(source.length + 1);\n let xor = 0x00;\n for (let i = 0; i < source.length; i++) {\n const byte = source[i];\n const value = byte > 127 ? byte - 256 : byte;\n payload[i] = value;\n xor ^= value;\n }\n payload[source.length] = xor;\n let prefix;\n if (chainId === 1)\n prefix = \"NULS\";\n else if (chainId === 2)\n prefix = \"tNULS\";\n else {\n const chainIdBytes = concatBytes(new Uint8Array([0xff & (chainId >> 0)]), new Uint8Array([0xff & (chainId >> 8)]));\n prefix = base58UncheckedEncode(chainIdBytes).toUpperCase();\n }\n return (prefix + prefixReference[prefix.length - 1] + base58UncheckedEncode(payload));\n};\nexport const decodeNulsAddress = (source) => {\n let sourceWithoutPrefix;\n if (source.startsWith(\"NULS\"))\n sourceWithoutPrefix = source.slice(5);\n else if (source.startsWith(\"tNULS\"))\n sourceWithoutPrefix = source.slice(6);\n else\n sourceWithoutPrefix = decodePrefix(source);\n const payload = base58UncheckedDecode(sourceWithoutPrefix);\n let xor = 0x00;\n for (let i = 0; i < payload.length - 1; i++) {\n const byte = payload[i];\n const value = byte > 127 ? byte - 256 : byte;\n payload[i] = value;\n xor ^= value;\n }\n if (xor < 0)\n xor += 256;\n if (xor !== payload[payload.length - 1])\n throw new Error(\"Unrecognised address format\");\n return payload.slice(0, -1);\n};\nexport const nuls = {\n name,\n coinType,\n encode: encodeNulsAddress,\n decode: decodeNulsAddress,\n};\n//# sourceMappingURL=nuls.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"one\";\nconst coinType = 1023;\nconst hrp = \"one\";\nexport const encodeOneAddress = createBech32Encoder(hrp);\nexport const decodeOneAddress = createBech32Decoder(hrp);\nexport const one = {\n name,\n coinType,\n encode: encodeOneAddress,\n decode: decodeOneAddress,\n};\n//# sourceMappingURL=one.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"ont\";\nconst coinType = 1024;\nexport const encodeOntAddress = (source) => {\n const sourceWithVersion = concatBytes(new Uint8Array([0x17]), source);\n return base58CheckEncode(sourceWithVersion);\n};\nexport const decodeOntAddress = (source) => {\n const decoded = base58CheckDecode(source);\n const version = decoded[0];\n if (version !== 0x17)\n throw new Error(\"Unrecognised address format\");\n return decoded.slice(1);\n};\nexport const ont = {\n name,\n coinType,\n encode: encodeOntAddress,\n decode: decodeOntAddress,\n};\n//# sourceMappingURL=ont.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"poaLegacy\";\nconst coinType = 178;\nexport const encodePoaLegacyAddress = createHexChecksummedEncoder();\nexport const decodePoaLegacyAddress = createHexChecksummedDecoder();\nexport const poaLegacy = {\n name,\n coinType,\n encode: encodePoaLegacyAddress,\n decode: decodePoaLegacyAddress,\n};\n//# sourceMappingURL=poaLegacy.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"ppc\";\nconst coinType = 6;\nconst p2pkhVersions = [new Uint8Array([0x37])];\nconst p2shVersions = [new Uint8Array([0x75])];\nexport const encodePpcAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodePpcAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const ppc = {\n name,\n coinType,\n encode: encodePpcAddress,\n decode: decodePpcAddress,\n};\n//# sourceMappingURL=ppc.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"qtum\";\nconst coinType = 2301;\nexport const encodeQtumAddress = base58CheckEncode;\nexport const decodeQtumAddress = base58CheckDecode;\nexport const qtum = {\n name,\n coinType,\n encode: encodeQtumAddress,\n decode: decodeQtumAddress,\n};\n//# sourceMappingURL=qtum.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"rbtc\";\nconst coinType = 137;\nconst chainId = 30;\nexport const encodeRbtcAddress = createHexChecksummedEncoder(chainId);\nexport const decodeRbtcAddress = createHexChecksummedDecoder(chainId);\nexport const rbtc = {\n name,\n coinType,\n encode: encodeRbtcAddress,\n decode: decodeRbtcAddress,\n};\n//# sourceMappingURL=rbtc.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"rdd\";\nconst coinType = 4;\nconst p2pkhVersions = [new Uint8Array([0x3d])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeRddAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeRddAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const rdd = {\n name,\n coinType,\n encode: encodeRddAddress,\n decode: decodeRddAddress,\n};\n//# sourceMappingURL=rdd.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"rune\";\nconst coinType = 931;\nconst hrp = \"thor\";\nexport const encodeRuneAddress = createBech32Encoder(hrp);\nexport const decodeRuneAddress = createBech32Decoder(hrp);\nexport const rune = {\n name,\n coinType,\n encode: encodeRuneAddress,\n decode: decodeRuneAddress,\n};\n//# sourceMappingURL=rune.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"rvn\";\nconst coinType = 175;\nconst p2pkhVersions = [new Uint8Array([0x3c])];\nconst p2shVersions = [new Uint8Array([0x7a])];\nexport const encodeRvnAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeRvnAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const rvn = {\n name,\n coinType,\n encode: encodeRvnAddress,\n decode: decodeRvnAddress,\n};\n//# sourceMappingURL=rvn.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { bytesToHexWithoutPrefix, hexWithoutPrefixToBytes, } from \"../utils/bytes.js\";\nconst name = \"sc\";\nconst coinType = 1991;\nconst length = 32;\nconst checksumLength = 6;\nconst scChecksum = (source) => blake2b(source, { dkLen: length }).slice(0, checksumLength);\nexport const encodeScAddress = (source) => {\n const checksum = scChecksum(source);\n return bytesToHexWithoutPrefix(concatBytes(source, checksum));\n};\nexport const decodeScAddress = (source) => {\n if (source.length !== 76)\n throw new Error(\"Unrecognised address format\");\n const decoded = hexWithoutPrefixToBytes(source);\n const payload = decoded.slice(0, -checksumLength);\n const checksum = decoded.slice(-checksumLength);\n const newChecksum = scChecksum(payload);\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return payload;\n};\nexport const sc = {\n name,\n coinType,\n encode: encodeScAddress,\n decode: decodeScAddress,\n};\n//# sourceMappingURL=sc.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"sero\";\nconst coinType = 569;\nexport const encodeSeroAddress = base58UncheckedEncode;\nexport const decodeSeroAddress = (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded.length !== 96)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const sero = {\n name,\n coinType,\n encode: encodeSeroAddress,\n decode: decodeSeroAddress,\n};\n//# sourceMappingURL=sero.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"sol\";\nconst coinType = 501;\nexport const encodeSolAddress = (source) => {\n if (source.length !== 32)\n throw new Error(\"Unrecognised address format\");\n const encoded = base58UncheckedEncode(source);\n if (encoded.length < 32 || encoded.length > 44)\n throw new Error(\"Unrecognised address format\");\n return encoded;\n};\nexport const decodeSolAddress = (source) => {\n if (source.length < 32 || source.length > 44)\n throw new Error(\"Unrecognised address format\");\n const decoded = base58UncheckedDecode(source);\n if (decoded.length !== 32)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const sol = {\n name,\n coinType,\n encode: encodeSolAddress,\n decode: decodeSolAddress,\n};\n//# sourceMappingURL=sol.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"srm\";\nconst coinType = 573;\nexport const encodeSrmAddress = base58UncheckedEncode;\nexport const decodeSrmAddress = base58UncheckedDecode;\nexport const srm = {\n name,\n coinType,\n encode: encodeSrmAddress,\n decode: decodeSrmAddress,\n};\n//# sourceMappingURL=srm.js.map","import { createEosDecoder, createEosEncoder } from \"../utils/eosio.js\";\nconst name = \"steem\";\nconst coinType = 135;\nconst prefix = \"STM\";\nexport const encodeSteemAddress = createEosEncoder(prefix);\nexport const decodeSteemAddress = createEosDecoder(prefix);\nexport const steem = {\n name,\n coinType,\n encode: encodeSteemAddress,\n decode: decodeSteemAddress,\n};\n//# sourceMappingURL=steem.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"strat\";\nconst coinType = 105;\nconst p2pkhVersions = [new Uint8Array([0x3f])];\nconst p2shVersions = [new Uint8Array([0x7d])];\nexport const encodeStratAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeStratAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const strat = {\n name,\n coinType,\n encode: encodeStratAddress,\n decode: decodeStratAddress,\n};\n//# sourceMappingURL=strat.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { bytesToHexWithoutPrefix, hexToBytes, } from \"../utils/bytes.js\";\nimport { rawChecksumAddress } from \"../utils/hex.js\";\nconst name = \"strk\";\nconst coinType = 9004;\nconst addressLength = 32;\nconst addressRegex = /^0x[a-fA-F0-9]{64}$/;\nconst strkChecksum = (source) => {\n const chars = bytesToHexWithoutPrefix(source).toLowerCase().split(\"\");\n const sourceLeadingZeroIndex = source.findIndex((byte) => byte !== 0x00);\n const leadingZeroStripped = sourceLeadingZeroIndex > 0 ? source.slice(sourceLeadingZeroIndex) : source;\n const hash = new Uint8Array(32);\n hash.set(keccak_256(leadingZeroStripped), sourceLeadingZeroIndex);\n return rawChecksumAddress({ address: chars, hash, length: 64 });\n};\nexport const encodeStrkAddress = (source) => {\n if (source.length !== addressLength)\n throw new Error(\"Unrecognised address format\");\n return strkChecksum(source);\n};\nexport const decodeStrkAddress = (source) => {\n if (!addressRegex.test(source))\n throw new Error(\"Unrecognised address format\");\n const decoded = hexToBytes(source);\n if (strkChecksum(decoded) !== source)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const strk = {\n name,\n coinType,\n encode: encodeStrkAddress,\n decode: decodeStrkAddress,\n};\n//# sourceMappingURL=strk.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { utils } from \"@scure/base\";\nimport { base32CrockfordNormalise } from \"../utils/base32.js\";\nconst name = \"stx\";\nconst coinType = 5757;\nconst prefix = \"S\";\nconst length = 20;\nconst checkumLength = 4;\nconst p2pkhVersion = new Uint8Array([22]);\nconst p2shVersion = new Uint8Array([20]);\nconst radixStx = {\n encode: (source) => convertRadixStx(source, 8, 5, true),\n decode: (source) => Uint8Array.from(convertRadixStx(source, 5, 8, false)),\n};\nconst convertRadixStx = (data, from, to, padding) => {\n let carry = 0;\n let pos = 0;\n const mask = 2 ** to - 1;\n const res = [];\n for (const n of data.reverse()) {\n carry = (n << pos) | carry;\n pos += from;\n let i = 0;\n for (; pos >= to; pos -= to) {\n const v = ((carry >> (to * i)) & mask) >>> 0;\n res.unshift(v);\n i += 1;\n }\n carry = carry >> (to * i);\n }\n if (!padding && pos >= from)\n throw new Error(\"Excess padding\");\n if (!padding && carry)\n throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0)\n res.unshift(carry >>> 0);\n return res;\n};\nconst base32Stx = utils.chain(radixStx, utils.alphabet(\"0123456789ABCDEFGHJKMNPQRSTVWXYZ\"), utils.join(\"\"));\nconst stxChecksum = (data) => sha256(sha256(data)).slice(0, checkumLength);\nexport const encodeStxAddress = (source) => {\n if (source.length !== length + checkumLength)\n throw new Error(\"Unrecognised address format\");\n const hash160 = source.slice(0, length);\n const checksum = source.slice(-checkumLength);\n let version;\n let encoded;\n if (equalBytes(checksum, stxChecksum(concatBytes(p2pkhVersion, hash160)))) {\n version = \"P\";\n encoded = base32Stx.encode(source);\n }\n else if (equalBytes(checksum, stxChecksum(concatBytes(p2shVersion, hash160)))) {\n version = \"M\";\n encoded = base32Stx.encode(source);\n }\n else\n throw new Error(\"Unrecognised address format\");\n return `${prefix}${version}${encoded}`;\n};\nexport const decodeStxAddress = (source) => {\n if (source.length < 6)\n throw new Error(\"Unrecognised address format\");\n if (source[0] !== \"S\")\n throw new Error(\"Unrecognised address format\");\n const normalised = base32CrockfordNormalise(source);\n const version = normalised[1];\n let versionBytes;\n if (version === \"P\")\n versionBytes = p2pkhVersion;\n else if (version === \"M\")\n versionBytes = p2shVersion;\n else\n throw new Error(\"Unrecognised address format\");\n const payload = base32Stx.decode(normalised.slice(2));\n const decoded = payload.slice(0, -checkumLength);\n const checksum = payload.slice(-checkumLength);\n const newChecksum = stxChecksum(concatBytes(versionBytes, decoded));\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return payload;\n};\nexport const stx = {\n name,\n coinType,\n encode: encodeStxAddress,\n decode: decodeStxAddress,\n};\n//# sourceMappingURL=stx.js.map","import { bytesToHex, hexToBytes, } from \"../utils/bytes.js\";\nimport { stripHexPrefix } from \"../utils/hex.js\";\nconst name = \"sui\";\nconst coinType = 784;\nexport const encodeSuiAddress = (source) => {\n if (source.length !== 32)\n throw new Error(\"Unrecognised address format\");\n const encoded = bytesToHex(source);\n return encoded.toLowerCase();\n};\nexport const decodeSuiAddress = (source) => {\n const stripped = stripHexPrefix(source);\n // Check if the address has the correct format (64 hex chars)\n if (!/^0x[a-fA-F0-9]{64}$/.test(source) && !/^[a-fA-F0-9]{64}$/.test(stripped)) {\n throw new Error(\"Unrecognised address format\");\n }\n const decoded = hexToBytes(`0x${stripped}`);\n if (decoded.length !== 32)\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const sui = {\n name,\n coinType,\n encode: encodeSuiAddress,\n decode: decodeSuiAddress,\n};\n//# sourceMappingURL=sui.js.map","import { createBitcoinDecoder, createBitcoinEncoder, } from \"../utils/bitcoin.js\";\nconst name = \"sys\";\nconst coinType = 57;\nconst hrp = \"sys\";\nconst p2pkhVersions = [new Uint8Array([0x3f])];\nconst p2shVersions = [new Uint8Array([0x05])];\nexport const encodeSysAddress = createBitcoinEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeSysAddress = createBitcoinDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const sys = {\n name,\n coinType,\n encode: encodeSysAddress,\n decode: decodeSysAddress,\n};\n//# sourceMappingURL=sys.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"tfuel\";\nconst coinType = 589;\nexport const encodeTfuelAddress = createHexChecksummedEncoder();\nexport const decodeTfuelAddress = createHexChecksummedDecoder();\nexport const tfuel = {\n name,\n coinType,\n encode: encodeTfuelAddress,\n decode: decodeTfuelAddress,\n};\n//# sourceMappingURL=tfuel.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"thetaLegacy\";\nconst coinType = 500;\nexport const encodeThetaLegacyAddress = createHexChecksummedEncoder();\nexport const decodeThetaLegacyAddress = createHexChecksummedDecoder();\nexport const thetaLegacy = {\n name,\n coinType,\n encode: encodeThetaLegacyAddress,\n decode: decodeThetaLegacyAddress,\n};\n//# sourceMappingURL=thetaLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"tomoLegacy\";\nconst coinType = 889;\nexport const encodeTomoLegacyAddress = createHexChecksummedEncoder();\nexport const decodeTomoLegacyAddress = createHexChecksummedDecoder();\nexport const tomoLegacy = {\n name,\n coinType,\n encode: encodeTomoLegacyAddress,\n decode: decodeTomoLegacyAddress,\n};\n//# sourceMappingURL=tomoLegacy.js.map","import { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"trx\";\nconst coinType = 195;\nexport const encodeTrxAddress = base58CheckEncode;\nexport const decodeTrxAddress = base58CheckDecode;\nexport const trx = {\n name,\n coinType,\n encode: encodeTrxAddress,\n decode: decodeTrxAddress,\n};\n//# sourceMappingURL=trx.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"ttLegacy\";\nconst coinType = 1001;\nexport const encodeTtLegacyAddress = createHexChecksummedEncoder();\nexport const decodeTtLegacyAddress = createHexChecksummedDecoder();\nexport const ttLegacy = {\n name,\n coinType,\n encode: encodeTtLegacyAddress,\n decode: decodeTtLegacyAddress,\n};\n//# sourceMappingURL=ttLegacy.js.map","import { createHexChecksummedDecoder, createHexChecksummedEncoder, } from \"../utils/hex.js\";\nconst name = \"vet\";\nconst coinType = 818;\nexport const encodeVetAddress = createHexChecksummedEncoder();\nexport const decodeVetAddress = createHexChecksummedDecoder();\nexport const vet = {\n name,\n coinType,\n encode: encodeVetAddress,\n decode: decodeVetAddress,\n};\n//# sourceMappingURL=vet.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"via\";\nconst coinType = 14;\nconst p2pkhVersions = [new Uint8Array([0x47])];\nconst p2shVersions = [new Uint8Array([0x21])];\nexport const encodeViaAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeViaAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const via = {\n name,\n coinType,\n encode: encodeViaAddress,\n decode: decodeViaAddress,\n};\n//# sourceMappingURL=via.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"vlx\";\nconst coinType = 5655640;\nexport const encodeVlxAddress = base58UncheckedEncode;\nexport const decodeVlxAddress = base58UncheckedDecode;\nexport const vlx = {\n name,\n coinType,\n encode: encodeVlxAddress,\n decode: decodeVlxAddress,\n};\n//# sourceMappingURL=vlx.js.map","import { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"vlxLegacy\";\nconst coinType = 574;\nexport const encodeVlxLegacyAddress = base58UncheckedEncode;\nexport const decodeVlxLegacyAddress = base58UncheckedDecode;\nexport const vlxLegacy = {\n name,\n coinType,\n encode: encodeVlxLegacyAddress,\n decode: decodeVlxLegacyAddress,\n};\n//# sourceMappingURL=vlxLegacy.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { blake2b } from \"@noble/hashes/blake2b\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"vsys\";\nconst coinType = 360;\nconst vsysChecksum = (source) => {\n if (source[0] !== 5 || source[1] !== 77 /* M */ || source.length !== 26)\n return false;\n const checksum = source.slice(-4);\n const newChecksum = keccak_256(blake2b(source.slice(0, -4), { dkLen: 32 })).slice(0, 4);\n if (!equalBytes(checksum, newChecksum))\n return false;\n return true;\n};\nexport const encodeVsysAddress = (source) => {\n if (!vsysChecksum(source))\n throw new Error(\"Unrecognised address format\");\n return base58UncheckedEncode(source);\n};\nexport const decodeVsysAddress = (source) => {\n const encoded = source.startsWith(\"address:\") ? source.slice(8) : source;\n if (encoded.length > 36)\n throw new Error(\"Unrecognised address format\");\n const decoded = base58UncheckedDecode(encoded);\n if (!vsysChecksum(decoded))\n throw new Error(\"Unrecognised address format\");\n return decoded;\n};\nexport const vsys = {\n name,\n coinType,\n encode: encodeVsysAddress,\n decode: decodeVsysAddress,\n};\n//# sourceMappingURL=vsys.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { bytesToHexWithoutPrefix, hexToBytes, stringToBytes, } from \"../utils/bytes.js\";\nimport { isAddress } from \"../utils/hex.js\";\nconst name = \"wan\";\nconst coinType = 5718350;\nconst wanChecksum = (addressBytes) => {\n const addressStr = bytesToHexWithoutPrefix(addressBytes);\n const address = addressStr.split(\"\");\n // hash of string representation of hex address\n // this is intentional\n const hash = keccak_256(stringToBytes(addressStr));\n let hashByte;\n for (let i = 0; i < 40; i++) {\n hashByte = hash[Math.floor(i / 2)];\n if (i % 2 === 0)\n hashByte = hashByte >> 4;\n else\n hashByte &= 0xf;\n if (address[i] > \"9\" && hashByte <= 7)\n address[i] = address[i].toUpperCase();\n }\n return `0x${address.join(\"\")}`;\n};\nexport const encodeWanAddress = (source) => {\n return wanChecksum(source);\n};\nexport const decodeWanAddress = (source) => {\n if (!isAddress(source))\n throw new Error(\"Unrecognised address format\");\n const bytes = hexToBytes(source);\n if (wanChecksum(bytes) !== source)\n throw new Error(\"Unrecognised address format\");\n return bytes;\n};\nexport const wan = {\n name,\n coinType,\n encode: encodeWanAddress,\n decode: decodeWanAddress,\n};\n//# sourceMappingURL=wan.js.map","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { utils } from \"@scure/base\";\nimport { base58UncheckedDecode, base58UncheckedEncode, } from \"../utils/base58.js\";\nconst name = \"waves\";\nconst coinType = 5741564;\nconst checksumFn = (source) => keccak_256(blake2b(source, { dkLen: 32 }));\nconst checksumLength = 4;\nconst wavesChecksum = utils.checksum(checksumLength, checksumFn);\nexport const encodeWavesAddress = base58UncheckedEncode;\nexport const decodeWavesAddress = (source) => {\n const decoded = base58UncheckedDecode(source);\n if (decoded[0] !== 1)\n throw new Error(\"Invalid address format\");\n if (decoded[1] !== 87 || decoded.length !== 26)\n throw new Error(\"Invalid address format\");\n wavesChecksum.decode(decoded);\n return decoded;\n};\nexport const waves = {\n name,\n coinType,\n encode: encodeWavesAddress,\n decode: decodeWavesAddress,\n};\n//# sourceMappingURL=waves.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"wicc\";\nconst coinType = 99999;\nconst p2pkhVersions = [new Uint8Array([0x49])];\nconst p2shVersions = [new Uint8Array([0x33])];\nexport const encodeWiccAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeWiccAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const wicc = {\n name,\n coinType,\n encode: encodeWiccAddress,\n decode: decodeWiccAddress,\n};\n//# sourceMappingURL=wicc.js.map","import { createBech32mDecoder, createBech32mEncoder } from \"../utils/bech32.js\";\nconst name = \"xch\";\nconst coinType = 8444;\nconst hrp = \"xch\";\nconst limit = 90;\nexport const encodeXchAddress = createBech32mEncoder(hrp, limit);\nexport const decodeXchAddress = createBech32mDecoder(hrp, limit);\nexport const xch = {\n name,\n coinType,\n encode: encodeXchAddress,\n decode: decodeXchAddress,\n};\n//# sourceMappingURL=xch.js.map","import { keccak_256 } from \"@noble/hashes/sha3\";\nimport { base32Decode, base32Encode } from \"../utils/base32.js\";\nimport { bytesToHexWithoutPrefix } from \"../utils/bytes.js\";\nconst name = \"xem\";\nconst coinType = 43;\nexport const encodeXemAddress = base32Encode;\nexport const decodeXemAddress = (source) => {\n const address = source.toUpperCase().replace(/-/g, \"\");\n if (!address || address.length !== 40)\n throw new Error(\"Invalid address\");\n const decoded = base32Decode(address);\n let checksum = bytesToHexWithoutPrefix(keccak_256(decoded.slice(0, 21))).slice(0, 8);\n if (checksum !== bytesToHexWithoutPrefix(decoded.slice(21)))\n throw new Error(\"Invalid address\");\n return decoded;\n};\nexport const xem = {\n name,\n coinType,\n encode: encodeXemAddress,\n decode: decodeXemAddress,\n};\n//# sourceMappingURL=xem.js.map","import { decodeXmrAddress, encodeXmrAddress } from \"./xmr.js\";\nconst name = \"xhv\";\nconst coinType = 535;\nexport const encodeXhvAddress = encodeXmrAddress;\nexport const decodeXhvAddress = decodeXmrAddress;\nexport const xhv = {\n name,\n coinType,\n encode: encodeXhvAddress,\n decode: decodeXhvAddress,\n};\n//# sourceMappingURL=xhv.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { concatBytes } from \"@noble/hashes/utils\";\nimport { base32Decode, base32Encode } from \"../utils/base32.js\";\nimport { hexWithoutPrefixToBytes } from \"../utils/bytes.js\";\nconst name = \"xlm\";\nconst coinType = 148;\nconst versionByte = new Uint8Array([0x30]);\n// CRC16-XModem checksum\nconst xlmChecksum = (source) => {\n let crc = 0;\n for (let i = 0; i < source.length; i++) {\n const byte = source[i];\n let code = (crc >>> 8) & 0xff;\n code ^= byte & 0xff;\n code ^= code >>> 4;\n crc = (crc << 8) & 0xffff;\n crc ^= code;\n code = (code << 5) & 0xffff;\n crc ^= code;\n code = (code << 7) & 0xffff;\n crc ^= code;\n }\n return hexWithoutPrefixToBytes(crc.toString(16).padStart(4, \"0\")).reverse();\n};\nexport const encodeXlmAddress = (source) => {\n const payload = concatBytes(versionByte, source);\n const checksummed = xlmChecksum(payload);\n const payloadWithChecksum = concatBytes(payload, checksummed);\n return base32Encode(payloadWithChecksum);\n};\nexport const decodeXlmAddress = (source) => {\n const decoded = base32Decode(source);\n const version = decoded[0];\n const payload = decoded.slice(0, -2);\n const output = payload.slice(1);\n const checksum = decoded.slice(-2);\n if (version !== versionByte[0])\n throw new Error(\"Unrecognised address format\");\n const newChecksum = xlmChecksum(payload);\n if (!equalBytes(checksum, newChecksum))\n throw new Error(\"Unrecognised address format\");\n return output;\n};\nexport const xlm = {\n name,\n coinType,\n encode: encodeXlmAddress,\n decode: decodeXlmAddress,\n};\n//# sourceMappingURL=xlm.js.map","import { sha256 } from \"@noble/hashes/sha256\";\nimport { base58xrp, utils } from \"@scure/base\";\nconst name = \"xrp\";\nconst coinType = 144;\nconst base58XrpCheck = utils.chain(utils.checksum(4, (data) => sha256(sha256(data))), base58xrp);\nexport const encodeXrpAddress = base58XrpCheck.encode;\nexport const decodeXrpAddress = base58XrpCheck.decode;\nexport const xrp = {\n name,\n coinType,\n encode: encodeXrpAddress,\n decode: decodeXrpAddress,\n};\n//# sourceMappingURL=xrp.js.map","import { concatBytes } from \"@noble/hashes/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"xtz\";\nconst coinType = 1729;\n// Referenced from the followings\n// https://tezos.stackexchange.com/questions/183/base58-encoding-decoding-of-addresses-in-micheline\n// https://tezos.gitlab.io/api/p2p.html?highlight=contract_id#contract-id-22-bytes-8-bit-tag\nexport const encodeXtzAddress = (source) => {\n if (source.length !== 22 && source.length !== 21)\n throw new Error(\"Unrecognised address format\");\n const version = source[0];\n if (version === 0) {\n let prefix;\n if (source[1] === 0x00)\n prefix = new Uint8Array([0x06, 0xa1, 0x9f]); // prefix tz1 equal 06a19f\n else if (source[1] === 0x01)\n prefix = new Uint8Array([0x06, 0xa1, 0xa1]); // prefix tz2 equal 06a1a1\n else if (source[1] === 0x02)\n prefix = new Uint8Array([0x06, 0xa1, 0xa4]); // prefix tz3 equal 06a1a4\n else\n throw new Error(\"Unrecognised address format\");\n return base58CheckEncode(concatBytes(prefix, source.slice(2)));\n }\n if (version === 1) {\n return base58CheckEncode(concatBytes(new Uint8Array([0x02, 0x5a, 0x79]) /* prefix KT1 equal 025a79 */, source.slice(1, 21)));\n }\n throw new Error(\"Unrecognised address format\");\n};\nexport const decodeXtzAddress = (source) => {\n const decoded = base58CheckDecode(source).slice(3);\n const prefix = source.slice(0, 3);\n if (prefix === \"tz1\")\n return concatBytes(new Uint8Array([0x00, 0x00]), decoded);\n if (prefix === \"tz2\")\n return concatBytes(new Uint8Array([0x00, 0x01]), decoded);\n if (prefix === \"tz3\")\n return concatBytes(new Uint8Array([0x00, 0x02]), decoded);\n if (prefix === \"KT1\")\n return concatBytes(new Uint8Array([0x01]), decoded, new Uint8Array([0x00]));\n throw new Error(\"Unrecognised address format\");\n};\nexport const xtz = {\n name,\n coinType,\n encode: encodeXtzAddress,\n decode: decodeXtzAddress,\n};\n//# sourceMappingURL=xtz.js.map","import { createBase58VersionedDecoder, createBase58VersionedEncoder, } from \"../utils/base58.js\";\nconst name = \"xvg\";\nconst coinType = 77;\nconst p2pkhVersions = [new Uint8Array([0x1e])];\nconst p2shVersions = [new Uint8Array([0x21])];\nexport const encodeXvgAddress = createBase58VersionedEncoder(p2pkhVersions[0], p2shVersions[0]);\nexport const decodeXvgAddress = createBase58VersionedDecoder(p2pkhVersions, p2shVersions);\nexport const xvg = {\n name,\n coinType,\n encode: encodeXvgAddress,\n decode: decodeXvgAddress,\n};\n//# sourceMappingURL=xvg.js.map","import { createZcashDecoder, createZcashEncoder } from \"../utils/zcash.js\";\nconst name = \"zec\";\nconst coinType = 133;\nconst hrp = \"zs\";\nconst p2pkhVersions = [new Uint8Array([0x1c, 0xb8])];\nconst p2shVersions = [new Uint8Array([0x1c, 0xbd])];\nexport const encodeZecAddress = createZcashEncoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const decodeZecAddress = createZcashDecoder({\n hrp,\n p2pkhVersions,\n p2shVersions,\n});\nexport const zec = {\n name,\n coinType,\n encode: encodeZecAddress,\n decode: decodeZecAddress,\n};\n//# sourceMappingURL=zec.js.map","import { equalBytes } from \"@noble/curves/abstract/utils\";\nimport { base58CheckDecode, base58CheckEncode } from \"../utils/base58.js\";\nconst name = \"zen\";\nconst coinType = 121;\nconst validPrefixes = [\n new Uint8Array([0x20, 0x89]),\n new Uint8Array([0x1c, 0xb8]),\n new Uint8Array([0x20, 0x96]),\n new Uint8Array([0x1c, 0xbd]),\n new Uint8Array([0x16, 0x9a]), // zc\n];\nexport const encodeZenAddress = (source) => {\n const prefix = source.slice(0, 2);\n if (!validPrefixes.some((x) => equalBytes(x, prefix)))\n throw new Error(\"Invalid prefix\");\n return base58CheckEncode(source);\n};\nexport const decodeZenAddress = (source) => {\n const decoded = base58CheckDecode(source);\n const prefix = decoded.slice(0, 2);\n if (!validPrefixes.some((x) => equalBytes(x, prefix)))\n throw new Error(\"Invalid prefix\");\n return decoded;\n};\nexport const zen = {\n name,\n coinType,\n encode: encodeZenAddress,\n decode: decodeZenAddress,\n};\n//# sourceMappingURL=zen.js.map","import { createBech32Decoder, createBech32Encoder } from \"../utils/bech32.js\";\nconst name = \"zil\";\nconst coinType = 313;\nexport const encodeZilAddress = createBech32Encoder(\"zil\");\nexport const decodeZilAddress = createBech32Decoder(\"zil\");\nexport const zil = {\n name,\n coinType,\n encode: encodeZilAddress,\n decode: decodeZilAddress,\n};\n//# sourceMappingURL=zil.js.map","export const evmCoinTypeToNameMap = Object.freeze({\n /* Chain ID: 0 */\n \"2147483648\": [\"default\", \"Default\"],\n /* Chain ID: 10 */\n \"2147483658\": [\"op\", \"Optimism\"],\n /* Chain ID: 25 */\n \"2147483673\": [\"cro\", \"Cronos\"],\n /* Chain ID: 56 */\n \"2147483704\": [\"bsc\", \"BNB Smart Chain\"],\n /* Chain ID: 60 */\n \"2147483708\": [\"go\", \"GoChain\"],\n /* Chain ID: 61 */\n \"2147483709\": [\"etc\", \"Ethereum Classic\"],\n /* Chain ID: 88 */\n \"2147483736\": [\"tomo\", \"TomoChain\"],\n /* Chain ID: 99 */\n \"2147483747\": [\"poa\", \"POA\"],\n /* Chain ID: 100 */\n \"2147483748\": [\"gno\", \"Gnosis\"],\n /* Chain ID: 108 */\n \"2147483756\": [\"tt\", \"ThunderCore\"],\n /* Chain ID: 137 */\n \"2147483785\": [\"matic\", \"Polygon\"],\n /* Chain ID: 169 */\n \"2147483817\": [\"manta\", \"Manta Pacific\"],\n /* Chain ID: 246 */\n \"2147483894\": [\"ewt\", \"Energy Web\"],\n /* Chain ID: 250 */\n \"2147483898\": [\"ftm\", \"Fantom Opera\"],\n /* Chain ID: 288 */\n \"2147483936\": [\"boba\", \"Boba\"],\n /* Chain ID: 324 */\n \"2147483972\": [\"zksync\", \"zkSync\"],\n /* Chain ID: 361 */\n \"2147484009\": [\"theta\", \"Theta\"],\n /* Chain ID: 820 */\n \"2147484468\": [\"clo\", \"Callisto\"],\n /* Chain ID: 1088 */\n \"2147484736\": [\"metis\", \"Metis\"],\n /* Chain ID: 5000 */\n \"2147488648\": [\"mantle\", \"Mantle\"],\n /* Chain ID: 8453 */\n \"2147492101\": [\"base\", \"Base\"],\n /* Chain ID: 39797 */\n \"2147523445\": [\"nrg\", \"Energi\"],\n /* Chain ID: 42161 */\n \"2147525809\": [\"arb1\", \"Arbitrum One\"],\n /* Chain ID: 42220 */\n \"2147525868\": [\"celo\", \"Celo\"],\n /* Chain ID: 43114 */\n \"2147526762\": [\"avaxc\", \"Avalanche C-Chain\"],\n /* Chain ID: 59144 */\n \"2147542792\": [\"linea\", \"Linea\"],\n /* Chain ID: 534352 */\n \"2148018000\": [\"scr\", \"Scroll\"],\n /* Chain ID: 7777777 */\n \"2155261425\": [\"zora\", \"Zora\"],\n});\nexport const nonEvmCoinTypeToNameMap = Object.freeze({\n \"0\": [\"btc\", \"Bitcoin\"],\n \"2\": [\"ltc\", \"Litecoin\"],\n \"3\": [\"doge\", \"Dogecoin\"],\n \"4\": [\"rdd\", \"Reddcoin\"],\n \"5\": [\"dash\", \"Dash\"],\n \"6\": [\"ppc\", \"Peercoin\"],\n \"7\": [\"nmc\", \"Namecoin\"],\n \"14\": [\"via\", \"Viacoin\"],\n \"20\": [\"dgb\", \"DigiByte\"],\n \"22\": [\"mona\", \"Monacoin\"],\n \"42\": [\"dcr\", \"Decred\"],\n \"43\": [\"xem\", \"NEM\"],\n \"55\": [\"aib\", \"AIB\"],\n \"57\": [\"sys\", \"Syscoin\"],\n \"60\": [\"eth\", \"Ethereum\"],\n \"61\": [\"etcLegacy\", \"[LEGACY] Ethereum Classic\"],\n \"74\": [\"icx\", \"ICON\"],\n \"77\": [\"xvg\", \"Verge\"],\n \"105\": [\"strat\", \"Stratis\"],\n \"111\": [\"ark\", \"ARK\"],\n \"118\": [\"atom\", \"Atom\"],\n \"121\": [\"zen\", \"Zencash\"],\n \"128\": [\"xmr\", \"Monero\"],\n \"133\": [\"zec\", \"Zcash\"],\n \"134\": [\"lsk\", \"Lisk\"],\n \"135\": [\"steem\", \"Steem\"],\n \"136\": [\"firo\", \"Firo\"],\n \"137\": [\"rbtc\", \"RSK\"],\n \"141\": [\"kmd\", \"Komodo\"],\n \"144\": [\"xrp\", \"Ripple\"],\n \"145\": [\"bch\", \"Bitcoin Cash\"],\n \"148\": [\"xlm\", \"Stellar Lumens\"],\n \"153\": [\"btm\", \"Bytom\"],\n \"156\": [\"btg\", \"Bitcoin Gold\"],\n \"165\": [\"nano\", \"Nano\"],\n \"175\": [\"rvn\", \"Ravencoin\"],\n \"178\": [\"poaLegacy\", \"[LEGACY] POA\"],\n \"192\": [\"lcc\", \"LitecoinCash\"],\n \"194\": [\"eos\", \"EOS\"],\n \"195\": [\"trx\", \"Tron\"],\n \"204\": [\"bcn\", \"Bytecoin\"],\n \"235\": [\"fio\", \"FIO\"],\n \"236\": [\"bsv\", \"BitcoinSV\"],\n \"242\": [\"nim\", \"Nimiq\"],\n \"246\": [\"ewtLegacy\", \"[LEGACY] Energy Web\"],\n \"283\": [\"algo\", \"Algorand\"],\n \"291\": [\"iost\", \"IOST\"],\n \"301\": [\"divi\", \"Divi Project\"],\n \"304\": [\"iotx\", \"IoTeX\"],\n \"308\": [\"bts\", \"Bitshares\"],\n \"309\": [\"ckb\", \"Nervos CKB\"],\n \"313\": [\"zil\", \"Zilliqa\"],\n \"326\": [\"mrx\", \"Metrix Coin\"],\n \"330\": [\"luna\", \"Terra\"],\n \"354\": [\"dot\", \"Polkadot\"],\n \"360\": [\"vsys\", \"V Systems\"],\n \"367\": [\"abbc\", \"ABBC\"],\n \"397\": [\"near\", \"NEAR Protocol\"],\n \"415\": [\"etn\", \"Electroneum\"],\n \"425\": [\"aion\", \"Aion\"],\n \"434\": [\"ksm\", \"Kusama\"],\n \"457\": [\"ae\", \"æternity\"],\n \"459\": [\"kava\", \"Kava\"],\n \"461\": [\"fil\", \"Filecoin\"],\n \"472\": [\"ar\", \"Arweave\"],\n \"489\": [\"cca\", \"Counos\"],\n \"500\": [\"thetaLegacy\", \"[LEGACY] Theta\"],\n \"501\": [\"sol\", \"Solana\"],\n \"508\": [\"egld\", \"MultiversX\"],\n \"535\": [\"xhv\", \"Haven Protocol\"],\n \"539\": [\"flow\", \"Flow\"],\n \"566\": [\"iris\", \"Irisnet\"],\n \"568\": [\"lrg\", \"Large Coin\"],\n \"569\": [\"sero\", \"Super Zero Protocol\"],\n \"570\": [\"bdx\", \"Beldex\"],\n \"571\": [\"ccxx\", \"Counos X\"],\n \"573\": [\"srm\", \"Serum\"],\n \"574\": [\"vlxLegacy\", \"[LEGACY] Velas\"],\n \"576\": [\"bps\", \"BitcoinPoS\"],\n \"589\": [\"tfuel\", \"Theta Fuel\"],\n \"592\": [\"grin\", \"Grin\"],\n \"700\": [\"gnoLegacy\", \"[LEGACY] Gnosis\"],\n \"714\": [\"bnb\", \"BNB\"],\n \"784\": [\"sui\", \"Sui\"],\n \"818\": [\"vet\", \"VeChain\"],\n \"820\": [\"cloLegacy\", \"[LEGACY] Callisto\"],\n \"825\": [\"hive\", \"Hive\"],\n \"888\": [\"neo\", \"NEO\"],\n \"889\": [\"tomoLegacy\", \"[LEGACY] TomoChain\"],\n \"904\": [\"hnt\", \"Helium\"],\n \"931\": [\"rune\", \"THORChain\"],\n \"999\": [\"bcd\", \"Bitcoin Diamond\"],\n \"1001\": [\"ttLegacy\", \"[LEGACY] ThunderCore\"],\n \"1007\": [\"ftmLegacy\", \"[LEGACY] Fantom\"],\n \"1023\": [\"one\", \"HARMONY-ONE\"],\n \"1024\": [\"ont\", \"Ontology\"],\n \"1237\": [\"nostr\", \"Nostr\"],\n \"1729\": [\"xtz\", \"Tezos\"],\n \"1815\": [\"ada\", \"Cardano\"],\n \"1991\": [\"sc\", \"Sia\"],\n \"2301\": [\"qtum\", \"QTUM\"],\n \"2303\": [\"gxc\", \"GXChain\"],\n \"2305\": [\"ela\", \"Elastos\"],\n \"2718\": [\"nas\", \"Nebulas\"],\n \"3030\": [\"hbar\", \"Hedera HBAR\"],\n \"4218\": [\"iota\", \"IOTA\"],\n \"5353\": [\"hns\", \"Handshake\"],\n \"5757\": [\"stx\", \"Stacks\"],\n \"6060\": [\"goLegacy\", \"[LEGACY] GoChain\"],\n \"8444\": [\"xch\", \"Chia\"],\n \"8964\": [\"nuls\", \"NULS\"],\n \"9000\": [\"avax\", \"Avalanche\"],\n \"9004\": [\"strk\", \"StarkNet\"],\n \"9797\": [\"nrgLegacy\", \"[LEGACY] Energi\"],\n \"16754\": [\"ardr\", \"Ardor\"],\n \"19167\": [\"flux\", \"Flux\"],\n \"52752\": [\"celoLegacy\", \"[LEGACY] Celo\"],\n \"99999\": [\"wicc\", \"Waykichain\"],\n \"5655640\": [\"vlx\", \"Velas\"],\n \"5718350\": [\"wan\", \"Wanchain\"],\n \"5741564\": [\"waves\", \"Waves\"],\n});\nexport const coinTypeToNameMap = Object.freeze({\n ...nonEvmCoinTypeToNameMap,\n ...evmCoinTypeToNameMap,\n});\n//# sourceMappingURL=coinTypeToNameMap.js.map","import { evmCoinTypeToNameMap, nonEvmCoinTypeToNameMap, } from \"./coinTypeToNameMap.js\";\nexport const evmCoinNameToTypeMap = Object.freeze(Object.fromEntries(Object.entries(evmCoinTypeToNameMap).map(([k, [v]]) => [v, parseInt(k)])));\nexport const nonEvmCoinNameToTypeMap = Object.freeze(Object.fromEntries(Object.entries(nonEvmCoinTypeToNameMap).map(([k, [v]]) => [v, parseInt(k)])));\nexport const coinNameToTypeMap = Object.freeze({\n ...evmCoinNameToTypeMap,\n ...nonEvmCoinNameToTypeMap,\n});\n//# sourceMappingURL=coinNameToTypeMap.js.map","export const SLIP44_MSB = 0x80000000;\nexport const isEvmCoinType = (coinType) => ((coinType & SLIP44_MSB) !== 0);\nexport const evmChainIdToCoinType = (chainId) => {\n if (chainId >= SLIP44_MSB)\n throw new Error(\"Invalid chainId\");\n return ((SLIP44_MSB | chainId) >>> 0);\n};\nexport const coinTypeToEvmChainId = (coinType) => {\n if ((coinType & SLIP44_MSB) === 0)\n throw new Error(\"Coin type is not an EVM chain\");\n return (((SLIP44_MSB - 1) & coinType) >>\n 0);\n};\n//# sourceMappingURL=evm.js.map","import * as formats from \"./coins.js\";\nimport { coinNameToTypeMap, evmCoinNameToTypeMap, nonEvmCoinNameToTypeMap, } from \"./consts/coinNameToTypeMap.js\";\nimport { coinTypeToNameMap, evmCoinTypeToNameMap, nonEvmCoinTypeToNameMap, } from \"./consts/coinTypeToNameMap.js\";\nimport { SLIP44_MSB, coinTypeToEvmChainId } from \"./utils/evm.js\";\nexport { coinNameToTypeMap, coinTypeToNameMap, evmCoinNameToTypeMap, evmCoinTypeToNameMap, nonEvmCoinNameToTypeMap, nonEvmCoinTypeToNameMap, };\nexport const getCoderByCoinName = (name) => {\n const format = formats[name];\n if (!format) {\n // EVM coin\n const coinType = coinNameToTypeMap[name];\n if (!coinType)\n throw new Error(`Unsupported coin: ${name}`);\n const evmChainId = coinTypeToEvmChainId(coinType);\n const ethFormat = formats[\"eth\"];\n return {\n name: name,\n coinType,\n evmChainId,\n encode: ethFormat.encode,\n decode: ethFormat.decode,\n };\n }\n return format;\n};\nexport const getCoderByCoinType = (coinType) => {\n const names = coinTypeToNameMap[String(coinType)];\n // https://docs.ens.domains/ens-improvement-proposals/ensip-11-evmchain-address-resolution\n if (coinType >= SLIP44_MSB) {\n // EVM coin\n const evmChainId = coinTypeToEvmChainId(coinType);\n const isUnknownChain = !names;\n const name = isUnknownChain ? `Unknown Chain (${evmChainId})` : names[0]; // name is derivable\n const ethFormat = formats[\"eth\"];\n return {\n name,\n coinType: coinType,\n evmChainId,\n isUnknownChain,\n encode: ethFormat.encode,\n decode: ethFormat.decode,\n };\n }\n if (!names) {\n throw new Error(`Unsupported coin type: ${coinType}`);\n }\n const [name] = names;\n const format = formats[name];\n return format;\n};\n//# sourceMappingURL=index.js.map","import { ChainName } from \"@/types\";\nimport { convertEVMChainIdToCoinType } from \"@/utils\";\nimport { getCoderByCoinName } from \"@ensdomains/address-encoder\";\nimport { isAddress } from \"viem\";\nimport { base, arbitrum, polygon, optimism, zora, mainnet, celo } from \"viem/chains\";\n\nexport interface SupportedEnsAddress {\n validateFunc?: (value: string) => boolean;\n isEMV?: boolean;\n label: string;\n coinType: number;\n chainId?: number;\n chainName: ChainName;\n placeholder?: string;\n}\n\nconst isValidEmvAddress = (value: string): boolean => {\n return isAddress(value);\n};\n\nconst verifyAddress = (value: string, coinName: string): boolean => {\n\n try {\n const coder = getCoderByCoinName(coinName);\n coder.decode(value);\n return true;\n } catch(err) {\n console.log(`Failed to decode value: ${coinName}`, err);\n return false;\n }\n\n}\n\nconst isValidBtcAddress = (value: string): boolean => {\n return verifyAddress(value, \"btc\")\n}\n\nconst isValidSolAddress = (value: string): boolean => {\n return verifyAddress(value, \"sol\")\n}\n\n\nexport const supportedAddresses: SupportedEnsAddress[] = [\n {\n isEMV: true,\n label: \"Ethereum\",\n coinType: 60,\n chainId: mainnet.id,\n chainName: \"eth\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: false,\n label: \"Bitcoin\",\n coinType: 0,\n chainName: \"bitcoin\",\n chainId: 0,\n placeholder: \"7Mi3m...sy7dw\",\n validateFunc: isValidBtcAddress\n },\n {\n isEMV: false,\n label: \"Solana\",\n coinType: 501,\n chainName: \"sol\",\n chainId: 501,\n placeholder: \"1BH2S...Y3x33\",\n validateFunc: isValidSolAddress\n },\n {\n isEMV: true,\n label: \"Base\",\n coinType: convertEVMChainIdToCoinType(base.id),\n chainId: base.id,\n chainName: \"base\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Arbitrum\",\n coinType: convertEVMChainIdToCoinType(arbitrum.id),\n chainId: arbitrum.id,\n chainName: \"arb\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Celo\",\n coinType: convertEVMChainIdToCoinType(celo.id),\n chainId: arbitrum.id,\n chainName: \"celo\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Polygon\",\n coinType: convertEVMChainIdToCoinType(polygon.id),\n chainId: polygon.id,\n chainName: \"matic\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Optimism\",\n coinType: convertEVMChainIdToCoinType(optimism.id),\n chainId: optimism.id,\n chainName: \"op\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n {\n isEMV: true,\n label: \"Zora\",\n coinType: convertEVMChainIdToCoinType(zora.id),\n chainId: zora.id,\n chainName: \"zora\",\n validateFunc: isValidEmvAddress,\n placeholder: \"0x1D8...c19f8\",\n },\n];\n\nexport const getSupportedAddressMap = (): Record<number,SupportedEnsAddress> => {\n const map: Record<number,SupportedEnsAddress> = {}\n\n supportedAddresses.forEach(addr => {\n map[addr.coinType] = addr;\n })\n\n return map;\n}\n\nexport const getSupportedAddressByCoin = (\n coin: number\n): SupportedEnsAddress | undefined => {\n return supportedAddresses.find(addr => addr.coinType === coin);\n};\n\nexport const getSupportedAddressByName = (\n name: ChainName\n): SupportedEnsAddress | undefined => {\n return supportedAddresses.find(addr => addr.chainName === name);\n};\n","const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n","// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n","import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase<Prefix>}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders<Prefix>} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n","import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n","import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n","var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n","import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n","import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n","import { base32 } from './bases/base32.js'\nimport { base58btc } from './bases/base58.js'\nimport { coerce } from './bytes.js'\nimport * as Digest from './hashes/digest.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\nimport * as varint from './varint.js'\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n CID.createV0(\n /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID<Data, Format, Alg, 1>}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID<Data, Format, Alg, 1>} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID<Data, Format, Alg, Version>}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link<Data, Format, Alg, Version>} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder<string>} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n /**\n * @returns {API.LinkJSON<this>}\n */\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link<Data, Format, Alg, Version>|U} input\n * @returns {CID<Data, Format, Alg, Version>|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest<Alg>} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest<Alg>} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n * @returns {CID<Data, Format, Alg, Version>}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {CID<Data, Code, Alg, 1>}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n * @returns {[CID<T, C, A, V>, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n","import { baseX } from './base.js'\n\nexport const base36 = baseX({\n prefix: 'k',\n name: 'base36',\n alphabet: '0123456789abcdefghijklmnopqrstuvwxyz'\n})\n\nexport const base36upper = baseX({\n prefix: 'K',\n name: 'base36upper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\n})\n","import { base32 } from \"multiformats/bases/base32\";\nimport { base36 } from \"multiformats/bases/base36\";\nimport { CID } from \"multiformats/cid\";\n// Label's max length in DNS (https://tools.ietf.org/html/rfc1034#page-7)\nconst dnsLabelMaxLength = 63;\n/**\n * Take any ipfsHash and convert it to DNS-compatible CID\n * @param ipfsHash a regular ipfs hash either a cid v0 or v1\n * @return the resulting ipfs hash as a cid v1\n */\nexport const cidForWeb = (ipfsHash) => {\n let cid = CID.parse(ipfsHash);\n if (cid.version === 0) {\n cid = cid.toV1();\n }\n const dnsLabel = cid.toString(base32);\n if (dnsLabel.length > dnsLabelMaxLength) {\n const b36 = cid.toString(base36);\n if (b36.length <= dnsLabelMaxLength) {\n return b36;\n }\n throw new TypeError(`CID is longer than DNS limit of ${dnsLabelMaxLength} characters and is not compatible with public gateways`);\n }\n return dnsLabel;\n};\n/**\n * Take any ipfsHash and convert it to a CID v1 encoded in base32.\n * @param ipfsHash a regular ipfs hash either a cid v0 or v1 (v1 will remain unchanged)\n * @return the resulting ipfs hash as a cid v1\n */\nexport const cidV0ToV1Base32 = (ipfsHash) => {\n let cid = CID.parse(ipfsHash);\n if (cid.version === 0) {\n cid = cid.toV1();\n }\n return cid.toString(base32);\n};\n/**\n * Concats two Uint8Arrays\n * @param array1 first array\n * @param array2 second array\n * @return the resulting array\n */\nexport const concatUint8Arrays = (array1, array2) => {\n let result = new Uint8Array(array1.length + array2.length);\n result.set(array1, 0);\n result.set(array2, array1.length);\n return result;\n};\n//# sourceMappingURL=helpers.js.map","export const codeToName = {\n 0xe3: \"ipfs\",\n 0xe5: \"ipns\",\n 0xe4: \"swarm\",\n 0x01bc: \"onion\",\n 0x01bd: \"onion3\",\n 0xb19910: \"skynet\",\n 0xb29910: \"arweave\",\n};\nexport const nameToCode = {\n ipfs: 0xe3,\n ipns: 0xe5,\n swarm: 0xe4,\n onion: 0x01bc,\n onion3: 0x01bd,\n skynet: 0xb19910,\n arweave: 0xb29910,\n};\n//# sourceMappingURL=map.js.map","// @ts-check\n\nimport { rfc4648 } from './base.js'\n\nexport const base64 = rfc4648({\n prefix: 'm',\n name: 'base64',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n bitsPerChar: 6\n})\n\nexport const base64pad = rfc4648({\n prefix: 'M',\n name: 'base64pad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n bitsPerChar: 6\n})\n\nexport const base64url = rfc4648({\n prefix: 'u',\n name: 'base64url',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n bitsPerChar: 6\n})\n\nexport const base64urlpad = rfc4648({\n prefix: 'U',\n name: 'base64urlpad',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',\n bitsPerChar: 6\n})\n","import { base32 } from \"multiformats/bases/base32\";\nimport { base36 } from \"multiformats/bases/base36\";\nimport { base58btc } from \"multiformats/bases/base58\";\nimport { base64url } from \"multiformats/bases/base64\";\nimport { CID } from \"multiformats/cid\";\nimport { create as createDigest, decode as multihashDecode, } from \"multiformats/hashes/digest\";\n/**\n * Convert a hexadecimal string to Bytes, the string can start with or without '0x'\n * @param hex a hexadecimal value\n * @return the resulting Bytes\n */\nexport const hexStringToBytes = (hex) => {\n let value = hex;\n if (value.startsWith(\"0x\")) {\n value = value.slice(2);\n }\n if (value.length % 2 !== 0) {\n throw new Error(\"Invalid hex string\");\n }\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length; i += 2) {\n bytes[i / 2] = parseInt(value.slice(i, i + 2), 16);\n }\n return bytes;\n};\nexport const bytesToHexString = (bytes) => {\n let hex = \"\";\n for (let i = 0; i < bytes.length; i++) {\n hex += bytes[i].toString(16).padStart(2, \"0\");\n }\n return hex;\n};\n/**\n * Validates IPNS identifier to safeguard against insecure names.\n * @param cid used in ipns-ns\n * @return true if cid is a valid cryptographic IPNS identifier\n */\nconst isCryptographicIPNS = (cid) => {\n try {\n const { multihash } = cid;\n // Additional check for identifiers shorter\n // than what inlined ED25519 pubkey would be\n // https://github.com/ensdomains/ens-app/issues/849#issuecomment-777088950\n if (multihash.size < 38) {\n const mh = multihashDecode(multihash.bytes);\n // ED25519 pubkeys are inlined using identity hash function\n // and we should not see anything shorter than that\n if (mh.code === 0x0 && mh.size < 36) {\n // One can read inlined string value via:\n // console.log('ipns-ns id:', String(multiH.decode(new CID(value).multihash).digest))\n return false;\n }\n }\n // ok, CID looks fine\n return true;\n }\n catch (_) {\n return false;\n }\n};\nconst base64Decode = (value) => base64url.decode(`u${value}`);\n/**\n * list of known encoding,\n * encoding should be a function that takes a `string` input,\n * and return a {@link Bytes} result\n */\nconst encodes = {\n skynet: (value) => {\n return base64Decode(value);\n },\n swarm: (value) => {\n const bytes = hexStringToBytes(value);\n const multihash = createDigest(0x1b, bytes);\n return CID.create(1, 0xfa, multihash).bytes;\n },\n ipfs: (value) => {\n return CID.parse(value).toV1().bytes;\n },\n ipns: (value) => {\n let cid;\n try {\n cid = CID.parse(value, value.startsWith(\"k\") ? base36 : undefined);\n }\n catch (e) {\n // legacy v0 decode\n const bytes = base58btc.decode(`z${value}`);\n cid = new CID(0, 0x72, createDigest(0x00, bytes.slice(2)), bytes);\n }\n if (!isCryptographicIPNS(cid)) {\n throw Error(\"ipns-ns allows only valid cryptographic libp2p-key identifiers, try using ED25519 pubkey instead\");\n }\n // Represent IPNS name as a CID with libp2p-key codec\n // https://github.com/libp2p/specs/blob/master/RFC/0001-text-peerid-cid.md\n return CID.create(1, 0x72, cid.multihash).bytes;\n },\n utf8: (value) => {\n const encoder = new TextEncoder();\n return encoder.encode(value);\n },\n arweave: (value) => {\n return base64Decode(value);\n },\n};\n/**\n * list of known decoding,\n * decoding should be a function that takes a `Uint8Array` input,\n * and return a `string` result\n */\nconst decodes = {\n hexMultiHash: (value) => {\n const cid = CID.decode(value);\n return bytesToHexString(multihashDecode(cid.multihash.bytes).digest);\n },\n ipfs: (value) => {\n const cid = CID.decode(value).toV1();\n return cid.toString(cid.code === 0x72 ? base36 : base32);\n },\n ipns: (value) => {\n const cid = CID.decode(value).toV1();\n if (!isCryptographicIPNS(cid)) {\n // Value is not a libp2p-key, return original string\n console.warn(\"[ensdomains/content-hash] use of non-cryptographic identifiers in ipns-ns is deprecated and will be removed, migrate to ED25519 libp2p-key\");\n return String.fromCodePoint(...CID.decode(value).multihash.digest);\n // TODO: start throwing an error (after some deprecation period)\n // throw Error('ipns-ns allows only valid cryptographic libp2p-key identifiers, try using ED25519 pubkey instead')\n }\n return cid.toString(base36);\n },\n utf8: (value) => {\n const decoder = new TextDecoder();\n return decoder.decode(value);\n },\n base64: (value) => {\n return base64url.encode(value).substring(1);\n },\n};\n/**\n * list of known encoding/decoding for a given codec,\n * `encode` should be chosen among the `encodes` functions\n * `decode` should be chosen among the `decodes` functions\n */\nexport const profiles = {\n skynet: {\n encode: encodes.skynet,\n decode: decodes.base64,\n },\n swarm: {\n encode: encodes.swarm,\n decode: decodes.hexMultiHash,\n },\n ipfs: {\n encode: encodes.ipfs,\n decode: decodes.ipfs,\n },\n ipns: {\n encode: encodes.ipns,\n decode: decodes.ipns,\n },\n arweave: {\n encode: encodes.arweave,\n decode: decodes.base64,\n },\n default: {\n encode: encodes.utf8,\n decode: decodes.utf8,\n },\n};\n//# sourceMappingURL=profiles.js.map","import { varint } from \"multiformats\";\nimport { concatUint8Arrays } from \"./helpers.js\";\nimport { codeToName, nameToCode } from \"./map.js\";\nimport { bytesToHexString, hexStringToBytes, profiles, } from \"./profiles.js\";\nexport {} from \"./map.js\";\nexport { cidForWeb, cidV0ToV1Base32 } from \"./helpers.js\";\n/**\n * Decode a Content Hash.\n * @param contentHash an hex string containing a content hash\n * @return the decoded content\n */\nexport const decode = (contentHash) => {\n const bytes = hexStringToBytes(contentHash);\n const [code, offset] = varint.decode(bytes);\n const value = bytes.slice(offset);\n const name = codeToName[code];\n let profile = profiles[name];\n if (!profile)\n profile = profiles[\"default\"];\n return profile.decode(value);\n};\n/**\n * General purpose encoding function\n * @param name Codec name\n * @param value Content to encode\n */\nexport const encode = (name, value) => {\n let profile = profiles[name];\n if (!profile)\n profile = profiles[\"default\"];\n const bytes = profile.encode(value);\n const code = nameToCode[name];\n const codeBytes = varint.encodeTo(code, new Uint8Array(varint.encodingLength(code)));\n return bytesToHexString(concatUint8Arrays(codeBytes, bytes));\n};\n/**\n * Extract the codec of a content hash\n * @param contentHash hex string containing a content hash\n * @return the extracted codec\n */\nexport const getCodec = (contentHash) => {\n const bytes = hexStringToBytes(contentHash);\n const [code] = varint.decode(bytes);\n return codeToName[code];\n};\n//# sourceMappingURL=index.js.map","import { ContenthashProtocol } from \"@/types\";\nimport { encode } from \"@ensdomains/content-hash\";\n\nexport interface SupportedContenthashRecord {\n protocol: ContenthashProtocol;\n label: string;\n}\n\nexport const supportedContenthashRecords: SupportedContenthashRecord[] = [\n {\n protocol: ContenthashProtocol.Ipfs,\n label: \"Ipfs\",\n },\n {\n protocol: ContenthashProtocol.Onion,\n label: \"Onion3\",\n },\n {\n protocol: ContenthashProtocol.Arweave,\n label: \"Arweave\",\n },\n {\n protocol: ContenthashProtocol.Skynet,\n label: \"Skynet\",\n },\n {\n protocol: ContenthashProtocol.Swarm,\n label: \"Swarm\",\n },\n];\n\nexport const getSupportedChashByProtocol = (\n protocol: ContenthashProtocol\n): SupportedContenthashRecord | undefined => {\n return supportedContenthashRecords.find(chash => chash.protocol === protocol);\n};\n\nexport const isContenthashValid = (\n protocol: ContenthashProtocol,\n value: string\n) => {\n try {\n encode(protocol, value);\n return true;\n } catch (err) {\n return false;\n }\n};\n","import { IconName } from \"@/components\";\n\nexport enum TextRecordCategory {\n Image = \"image\",\n General = \"general\",\n Social = \"social\",\n}\nexport interface SupportedTextRecord {\n icon: IconName;\n key: string;\n category: TextRecordCategory;\n label?: string;\n placeholder?: string\n socialRecordPrefix?: string\n}\n\nexport const supportedTexts: SupportedTextRecord[] = [\n {\n icon: \"person\",\n key: \"avatar\",\n category: TextRecordCategory.Image,\n label: \"Avatar\",\n },\n {\n icon: \"person\",\n key: \"header\",\n category: TextRecordCategory.Image,\n label: \"Header\",\n },\n {\n icon: \"person\",\n key: \"name\",\n category: TextRecordCategory.General,\n label: \"Nickname\",\n },\n {\n icon: \"book\",\n key: \"description\",\n category: TextRecordCategory.General,\n label: \"Short bio\",\n },\n {\n icon: \"globe\",\n key: \"url\",\n category: TextRecordCategory.General,\n label: \"Website\",\n },\n {\n icon: \"map-pin\",\n key: \"location\",\n category: TextRecordCategory.General,\n label: \"Location\",\n },\n {\n icon: \"mail\",\n key: \"mail\",\n category: TextRecordCategory.General,\n label: \"E-Mail\",\n },\n {\n icon: \"person\",\n key: \"com.twitter\",\n category: TextRecordCategory.Social,\n label: \"Twitter\",\n },\n {\n icon: \"discord\",\n key: \"com.discord\",\n category: TextRecordCategory.Social,\n label: \"Discord\",\n },\n {\n icon: \"github\",\n key: \"com.github\",\n category: TextRecordCategory.Social,\n label: \"Github\",\n },\n {\n icon: \"telegram\",\n key: \"org.telegram\",\n category: TextRecordCategory.Social,\n label: \"Telegram\",\n },\n {\n icon: \"youtube\",\n key: \"com.youtube\",\n category: TextRecordCategory.Social,\n label: \"Youtube\",\n },\n];\n\nexport const getSupportedText = (key: string) => {\n return supportedTexts.find(txt => txt.key === key);\n};\n","import { EnsTextRecord } from \"@/types\";\nimport {\n SupportedTextRecord,\n supportedTexts,\n TextRecordCategory,\n} from \"@/constants\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Icon, Input, Text } from \"@/components/atoms\";\nimport { capitalize } from \"@/utils\";\n\ninterface TextRecordsProps {\n initialTexts: EnsTextRecord[];\n texts: EnsTextRecord[];\n onTextsChanged: (texts: EnsTextRecord[]) => void;\n category: TextRecordCategory;\n searchFilter?: string;\n}\n\nexport const TextRecords = ({\n texts,\n onTextsChanged,\n category,\n initialTexts,\n searchFilter,\n}: TextRecordsProps) => {\n const existingTextsMap = useMemo(() => {\n const map: Record<string, EnsTextRecord> = {};\n texts.forEach(txt => {\n map[txt.key] = txt;\n });\n return map;\n }, [texts]);\n\n const [lastAddedKey, setLastAddedKey] = useState<string | null>(null);\n const inputRefs = useRef<Record<string, HTMLInputElement | null>>({});\n\n useEffect(() => {\n if (lastAddedKey && inputRefs.current[lastAddedKey]) {\n inputRefs.current[lastAddedKey]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n inputRefs.current[lastAddedKey]?.focus();\n setLastAddedKey(null);\n }\n }, [texts, lastAddedKey]);\n\n const handleTextChanged = (key: string, value: string) => {\n const _texts = [...texts];\n for (const text of _texts) {\n if (text.key === key) {\n text.value = value;\n }\n }\n onTextsChanged(_texts);\n };\n\n const handleTextAdded = (key: string) => {\n const initialText = initialTexts.find(txt => txt.key === key);\n onTextsChanged([...texts, { key, value: initialText?.value || \"\" }]);\n setLastAddedKey(key);\n };\n\n const handleRemoveText = (key: string) => {\n onTextsChanged(texts.filter(text => text.key !== key));\n };\n\n const filterSuggestions = (record: SupportedTextRecord): boolean => {\n if (searchFilter && searchFilter.length > 0) {\n const lowercase = searchFilter.toLocaleLowerCase();\n const label = record.label || \"\";\n\n return (\n record.key.toLocaleLowerCase().includes(lowercase) ||\n label.toLocaleLowerCase().includes(lowercase)\n );\n }\n return true;\n };\n\n const filteredItems: SupportedTextRecord[] = useMemo(() => {\n\n const shownTextCategory = [category];\n if (category === TextRecordCategory.General) {\n // We also show image records under general\n shownTextCategory.push(TextRecordCategory.Image);\n }\n\n return supportedTexts.filter(record => filterSuggestions(record) && shownTextCategory.includes(record.category));\n }, [searchFilter]);\n\n if (filteredItems.length === 0) {\n return <></>;\n }\n\n return (\n <div className=\"ns-text-records\">\n <Text className=\"ns-mb-2\" weight=\"bold\">\n {capitalize(category)}\n </Text>\n {filteredItems\n .filter(record => existingTextsMap[record.key] !== undefined)\n .map(record => {\n const current = existingTextsMap[record.key];\n\n return (\n <div key={record.key} style={{ marginBottom: 10 }}>\n <Text\n style={{ marginBottom: \"4px\" }}\n color=\"grey\"\n size=\"xs\"\n weight=\"medium\"\n >\n {record.label}\n </Text>\n <div\n style={{ width: \"100%\" }}\n className=\"d-flex align-items-center\"\n >\n <Input\n ref={(el: HTMLInputElement | null) => {\n inputRefs.current[record.key] = el;\n }}\n style={{ width: \"100%\" }}\n onChange={e => handleTextChanged(record.key, e.target.value)}\n prefix={<Icon name={record.icon} size={18} color=\"grey\" />}\n value={current.value}\n placeholder={record.placeholder}\n />\n <div\n onClick={() => handleRemoveText(record.key)}\n className=\"ns-close-icon ns-ms-1\"\n >\n <Icon name=\"x\" size={18} />\n </div>\n </div>\n </div>\n );\n })}\n <div className=\"row g-2\">\n {filteredItems\n .filter(\n record =>\n existingTextsMap[record.key] === undefined &&\n record.category !== TextRecordCategory.Image &&\n filterSuggestions(record)\n )\n .map(record => (\n <div key={record.key} className=\"col col-lg-3 col-sm-6\">\n <div\n className=\"ns-text-suggestion\"\n onClick={() => handleTextAdded(record.key)}\n >\n <Icon size={18} color=\"grey\" name={record.icon} />\n <Text className=\"ns-mt-1\" size=\"xs\" weight=\"medium\">\n {record.label}\n </Text>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import { EnsAddressRecord } from \"@/types\";\nimport { supportedAddresses, SupportedEnsAddress } from \"@/constants\";\nimport { ChainIcon, Icon, Input, Text } from \"@/components/atoms\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\n\ninterface AddressRecordProps {\n initialAddresses: EnsAddressRecord[];\n addresses: EnsAddressRecord[];\n onAddressesChanged: (addresses: EnsAddressRecord[]) => void;\n searchFilter?: string;\n}\n\nexport const AddressRecords = ({\n addresses,\n onAddressesChanged,\n initialAddresses,\n searchFilter,\n}: AddressRecordProps) => {\n const existingAddressMap = useMemo(() => {\n const map: Record<number, EnsAddressRecord> = {};\n addresses.forEach(addr => {\n map[addr.coinType] = addr;\n });\n return map;\n }, [addresses]);\n\n const [lastAddedKey, setLastAddedKey] = useState<string | null>(null);\n const inputRefs = useRef<Record<string, HTMLInputElement | null>>({});\n\n useEffect(() => {\n if (lastAddedKey && inputRefs.current[lastAddedKey]) {\n inputRefs.current[lastAddedKey]?.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n });\n inputRefs.current[lastAddedKey]?.focus();\n setLastAddedKey(null);\n }\n }, [addresses, lastAddedKey]);\n\n const handleAddressChanged = (coin: number, value: string) => {\n const _addresses = [...addresses];\n for (const addr of _addresses) {\n if (addr.coinType === coin) {\n addr.value = value;\n }\n }\n onAddressesChanged(_addresses);\n };\n\n const handleAddressAdded = (coin: number) => {\n const initialAddress = initialAddresses.find(i => i.coinType === coin);\n onAddressesChanged([\n ...addresses,\n { coinType: coin, value: initialAddress?.value || \"\" },\n ]);\n setLastAddedKey(`${coin}`);\n };\n\n const handleRemoveAddress = (coin: number) => {\n onAddressesChanged(addresses.filter(addr => addr.coinType !== coin));\n };\n\n const filterAddress = (address: SupportedEnsAddress): boolean => {\n if (searchFilter && searchFilter.length > 0) {\n const lowercase = searchFilter.toLocaleLowerCase();\n return (\n address.chainName.includes(lowercase) ||\n address.label.toLocaleLowerCase().includes(lowercase)\n );\n }\n return true;\n };\n\n const filteredAddresses = useMemo(() => {\n\n return supportedAddresses.filter(record => filterAddress(record));\n },[searchFilter])\n\n if (filteredAddresses.length === 0) {\n return <></>\n }\n\n\n return (\n <div className=\"ns-text-records\">\n <Text className=\"ns-mb-2\" weight=\"bold\">\n Addresses\n </Text>\n {filteredAddresses\n .filter(record => existingAddressMap[record.coinType] !== undefined)\n .map(record => {\n const current = existingAddressMap[record.coinType];\n const isInvalidAddress =\n current.value.length > 0 && !record.validateFunc?.(current.value);\n\n return (\n <div key={record.chainName} style={{ marginBottom: 10 }}>\n <Text\n style={{ marginBottom: \"4px\" }}\n color=\"grey\"\n size=\"xs\"\n weight=\"medium\"\n >\n {record.label}\n </Text>\n <div\n style={{ width: \"100%\" }}\n className=\"d-flex align-items-center\"\n >\n <Input\n ref={(el: HTMLInputElement | null) => {\n inputRefs.current[record.coinType] = el;\n }}\n error={isInvalidAddress}\n style={{ width: \"100%\" }}\n onChange={e =>\n handleAddressChanged(record.coinType, e.target.value)\n }\n prefix={<ChainIcon chain={record.chainName} size={18} />}\n value={current.value}\n placeholder={record.placeholder}\n />\n <div\n onClick={() => handleRemoveAddress(record.coinType)}\n className=\"ns-close-icon ns-ms-1\"\n >\n <Icon name=\"x\" size={18} />\n </div>\n </div>\n {isInvalidAddress && (\n <Text\n size=\"xs\"\n color=\"danger\"\n className=\"ns-mt-1\"\n >{`${record.label} address is not valid`}</Text>\n )}\n </div>\n );\n })}\n <div className=\"row g-2\">\n {filteredAddresses\n .filter(record => existingAddressMap[record.coinType] === undefined)\n .map(record => (\n <div key={record.coinType} className=\"col col-lg-3 col-sm-6\">\n <div\n className=\"ns-text-suggestion\"\n onClick={() => handleAddressAdded(record.coinType)}\n >\n <ChainIcon size={20} chain={record.chainName} />\n <Text className=\"ns-mt-1\" size=\"xs\" weight=\"medium\">\n {record.label}\n </Text>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import { Input, Text, Icon } from \"@/components/atoms\";\nimport { ContenthashIcon } from \"@/components/molecules\";\nimport {\n getSupportedChashByProtocol,\n isContenthashValid,\n SupportedContenthashRecord,\n supportedContenthashRecords,\n} from \"@/constants\";\nimport { ContenthashProtocol, EnsContenthashRecord } from \"@/types\";\nimport { useMemo } from \"react\";\n\ninterface ContenthashRecordProps {\n contenthash?: EnsContenthashRecord;\n onContenthashChanged: (value: EnsContenthashRecord) => void;\n onContenthashRemoved: () => void;\n onContenthashAdded: (protocol: ContenthashProtocol) => void;\n searchFilter?: string;\n}\n\nexport const ContenthashRecord = ({\n contenthash,\n onContenthashChanged,\n onContenthashRemoved,\n onContenthashAdded,\n searchFilter,\n}: ContenthashRecordProps) => {\n const metadata = useMemo<SupportedContenthashRecord | undefined>(() => {\n if (contenthash?.protocol) {\n return getSupportedChashByProtocol(contenthash?.protocol);\n }\n }, [contenthash]);\n\n const handleContenthashChanged = (\n protocol: ContenthashProtocol,\n value: string\n ) => {\n onContenthashChanged({ protocol, value });\n };\n\n const filterChash = (record: SupportedContenthashRecord): boolean => {\n if (searchFilter && searchFilter.length > 0) {\n const lowercase = searchFilter.toLocaleLowerCase();\n return (\n record.protocol.toLocaleLowerCase().includes(lowercase) ||\n record.label.toLocaleLowerCase().includes(lowercase)\n );\n }\n\n return true;\n };\n\n const filteredSuggestions: SupportedContenthashRecord[] = useMemo(() => {\n return supportedContenthashRecords.filter(record => filterChash(record));\n }, [searchFilter]);\n\n if (filteredSuggestions.length === 0) {\n return <></>;\n }\n\n return (\n <div className=\"ns-text-records\">\n <Text className=\"ns-mb-2\" weight=\"bold\">\n Website\n </Text>\n {!contenthash && (\n <div className=\"row g-2\">\n {filteredSuggestions.map(record => (\n <div key={record.protocol} className=\"col col-lg-3 col-sm-6\">\n <div\n className=\"ns-text-suggestion\"\n onClick={() => onContenthashAdded(record.protocol)}\n >\n <ContenthashIcon size={20} protocol={record.protocol} />\n <Text className=\"ns-mt-1\" size=\"xs\" weight=\"medium\">\n {record.label}\n </Text>\n </div>\n </div>\n ))}\n </div>\n )}\n {contenthash && metadata && filterChash(metadata) && (\n <div>\n <Text\n style={{ marginBottom: \"4px\" }}\n color=\"grey\"\n size=\"xs\"\n weight=\"medium\"\n >\n {metadata.label}\n </Text>\n <div style={{ width: \"100%\" }} className=\"d-flex align-items-center\">\n <Input\n style={{ width: \"100%\" }}\n onChange={e =>\n handleContenthashChanged(contenthash.protocol, e.target.value)\n }\n error={\n contenthash.value.length > 0 &&\n !isContenthashValid(contenthash.protocol, contenthash.value)\n }\n prefix={\n <ContenthashIcon protocol={contenthash.protocol} size={18} />\n }\n value={contenthash.value}\n placeholder={`${contenthash.protocol}://`}\n />\n <div\n onClick={() => onContenthashRemoved()}\n className=\"ns-close-icon ns-ms-1\"\n >\n <Icon name=\"x\" size={18} />\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import { useEffect } from \"react\";\nimport \"./ImageRecords.css\";\nimport { Dropdown } from \"@/components/molecules\";\nimport { Icon, Text } from \"@/components/atoms\";\n\ninterface ImageRecordProps {\n avatar?: string;\n header?: string;\n onAvatarAdded: (value: string) => void;\n onHeaderAdded: (value: string) => void;\n}\n\nconst commonBgStyles = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n};\n\nexport const ImageRecords = ({\n avatar,\n header,\n onAvatarAdded,\n onHeaderAdded,\n}: ImageRecordProps) => {\n // load avatar here\n useEffect(() => {}, [avatar]);\n\n let avatarStyles = {};\n if (avatar && avatar.length > 0) {\n avatarStyles = {\n backgroundImage: `url(${avatar})`,\n ...commonBgStyles,\n };\n }\n\n let headerStyles = {};\n if (header && header.length > 0) {\n headerStyles = {\n backgroundImage: `url(${header})`,\n ...commonBgStyles,\n };\n }\n\n let headerRecordSet = header !== undefined;\n let avatarRecordSet = avatar !== undefined;\n\n return (\n <div className=\"ns-image-records\">\n <div style={headerStyles} className=\"ns-cover-record-cont\">\n <div className=\"ns-top-grad\"></div>\n <div className=\"ns-bot-grad\"></div>\n {!headerRecordSet && <Dropdown\n trigger={\n <div className=\"ns-header-handle\">\n <Icon color=\"white\" name=\"rotate-circle\"></Icon>\n </div>\n }\n >\n <div className=\"ns-upload-options\">\n <Text\n onClick={e => {\n e.stopPropagation();\n if (!headerRecordSet) {\n onHeaderAdded(\"\");\n }\n }}\n weight=\"medium\"\n className=\"option\"\n size=\"sm\"\n >\n Add Header Record\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Upload image\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Select NFT\n </Text>\n </div>\n </Dropdown>}\n <div style={avatarStyles} className=\"ns-avatar-record-cont\">\n {!avatarRecordSet && <Dropdown\n trigger={\n <div className=\"ns-image-handle\">\n <Icon color=\"grey\" name=\"rotate-circle\"></Icon>\n </div>\n }\n >\n <div className=\"ns-upload-options\">\n <Text\n onClick={e => {\n e.stopPropagation();\n if (!avatarRecordSet) {\n onAvatarAdded(\"\");\n }\n }}\n weight=\"medium\"\n className=\"option\"\n size=\"sm\"\n >\n Add Avatar Record\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Upload image\n </Text>\n <Text weight=\"medium\" className=\"option disabled\" size=\"sm\">\n Select NFT\n </Text>\n </div>\n </Dropdown>}\n </div>\n </div>\n </div>\n );\n};\n","import { RefObject, useMemo, useRef, useState } from \"react\";\nimport {\n ContenthashProtocol,\n EnsAddressRecord,\n EnsContenthashRecord,\n EnsRecords,\n EnsTextRecord,\n} from \"@/types\";\nimport { Icon, Input, Text } from \"../atoms\";\nimport { TextRecords } from \"./text-records/TextRecords\";\nimport { AddressRecords } from \"./address-record/AddressRecords\";\nimport { ContenthashRecord } from \"./contenthash-records/ContenthashRecord\";\nimport \"./SelectRecordsForm.css\";\nimport { RecordsAddedParams } from \"./records-selector/RecordsSelector\";\nimport { ImageRecords } from \"./image-records/ImageRecords\";\nimport { deepCopy } from \"@/utils\";\nimport { TextRecordCategory } from \"@/constants\";\n\nenum RecordsSidebarItem {\n General = \"General\",\n Social = \"Social\",\n Addresses = \"Addresses\",\n Website = \"Website\",\n}\n\nexport interface SelectRecordsFormProps {\n records: EnsRecords;\n onRecordsUpdated: (records: EnsRecords) => void;\n}\n\nexport const SelectRecordsForm = ({\n records,\n onRecordsUpdated,\n}: SelectRecordsFormProps) => {\n const [initialRecords] = useState<EnsRecords>(deepCopy(records));\n\n const generalCategoryRef = useRef<HTMLDivElement | null>(null);\n const socialCategoryRef = useRef<HTMLDivElement | null>(null);\n const addressesCategoryRef = useRef<HTMLDivElement | null>(null);\n const websiteCategoryRef = useRef<HTMLDivElement | null>(null);\n const [searchFilter, setSearchFilter] = useState(\"\");\n\n const [currentNav, setCurrentNav] = useState<RecordsSidebarItem>(\n RecordsSidebarItem.General\n );\n\n const handleTextsUpdated = (texts: EnsTextRecord[]) => {\n onRecordsUpdated({ ...records, texts });\n };\n\n const handleAddressesUpdated = (addresses: EnsAddressRecord[]) => {\n onRecordsUpdated({ ...records, addresses });\n };\n\n const scrollToCategory = (category: RecordsSidebarItem) => {\n const references: Record<\n RecordsSidebarItem,\n RefObject<HTMLDivElement | null>\n > = {\n General: generalCategoryRef,\n Social: socialCategoryRef,\n Website: websiteCategoryRef,\n Addresses: addressesCategoryRef,\n };\n\n const currentRef = references[category];\n\n if (currentRef && currentRef.current) {\n currentRef.current.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n });\n }\n };\n\n const handleSidebarChange = (\n nav: RecordsSidebarItem,\n scroll: boolean = true\n ) => {\n setCurrentNav(nav);\n if (scroll) {\n scrollToCategory(nav);\n }\n };\n\n const handleContenthashAdded = (protocol: ContenthashProtocol) => {\n const oldContenthash = initialRecords.contenthash;\n\n let value = \"\";\n if (oldContenthash && oldContenthash.protocol === protocol) {\n value = oldContenthash.value;\n }\n onRecordsUpdated({ ...records, contenthash: { protocol, value } });\n };\n\n const handleRecordsAdded = (params: RecordsAddedParams) => {\n const newTexts = [...records.texts];\n if (params.keys.length > 0) {\n params.keys.forEach(key => {\n // If someone removes text thats initialy existed\n // and readed it, let also set the initial value\n const initialValue = initialRecords.texts.find(txt => txt.key === key);\n newTexts.push({\n key: key,\n value: initialValue ? initialValue.value : \"\",\n });\n });\n }\n const newAddresses = [...records.addresses];\n if (params.coins.length > 0) {\n params.coins.forEach(coin => {\n const initialValue = initialRecords.addresses.find(\n addr => addr.coinType === coin\n );\n newAddresses.push({\n coinType: coin,\n value: initialValue ? initialValue.value : \"\",\n });\n });\n }\n\n let newContenthash = records.contenthash\n ? { ...records.contenthash }\n : undefined;\n\n if (params.contenthash?.protocol) {\n const value = initialRecords.contenthash?.value || \"\";\n newContenthash = {\n protocol: params.contenthash.protocol,\n value: value,\n };\n }\n onRecordsUpdated({\n texts: newTexts,\n addresses: newAddresses,\n contenthash: newContenthash,\n });\n };\n\n const { avatar, header } = useMemo(() => {\n return {\n avatar: records.texts.find(r => r.key === \"avatar\")?.value,\n header: records.texts.find(r => r.key === \"header\")?.value,\n };\n }, [records.texts]);\n\n const handleContenthashUpdated = (contenthash: EnsContenthashRecord) => {\n onRecordsUpdated({ ...records, contenthash });\n };\n\n const handleContenthashRemoved = () => {\n const _records = { ...records };\n delete _records.contenthash;\n onRecordsUpdated(_records);\n };\n\n const handleImageRecordAdded = (\n record: \"avatar\" | \"header\",\n value: string\n ) => {\n const _texts = records.texts.filter(text => text.key !== record);\n\n let _value = value;\n if (_value.length === 0) {\n const initialValue = initialRecords.texts.find(txt => txt.key === record);\n _value = initialValue ? initialValue.value : value;\n }\n\n onRecordsUpdated({\n ...records,\n texts: [..._texts, { key: record, value: _value }],\n });\n scrollToCategory(RecordsSidebarItem.General);\n };\n\n return (\n <div className=\"ns-select-records-form\">\n {/* Avatar and header */}\n <div style={{ marginBottom: 30 }}>\n <ImageRecords\n avatar={avatar}\n header={header}\n onAvatarAdded={(value: string) =>\n handleImageRecordAdded(\"avatar\", value)\n }\n onHeaderAdded={(value: string) =>\n handleImageRecordAdded(\"header\", value)\n }\n />\n </div>\n {/* Search Input */}\n <div className=\"ns-records-content-wrapper\">\n <div className=\"ns-records-content row g-2\">\n <div className=\"col-12 ns-mb-1\">\n <Input\n value={searchFilter}\n onChange={e => setSearchFilter(e.target.value)}\n placeholder=\"Search\"\n prefix={<Icon name=\"search\" size={18} />}\n />\n </div>\n {/* Sidebar Navigation */}\n <div className=\"col col-sm-3 col-12 ns-records-sidebar\">\n {Object.keys(RecordsSidebarItem).map(item => {\n return (\n <div\n onClick={() =>\n handleSidebarChange(item as RecordsSidebarItem)\n }\n key={item}\n className={`sidebar-item ${item === currentNav ? \"active\" : \"\"}`}\n >\n <Text weight=\"medium\" size=\"sm\">\n {item}\n </Text>\n </div>\n );\n })}\n </div>\n {/* Record Container */}\n <div className=\"col col-sm-9 col-12 ns-records-inner ns-styled-scrollbar\">\n {/* General Records */}\n <div ref={generalCategoryRef} className=\"ns-mb-2\">\n <TextRecords\n initialTexts={initialRecords.texts}\n texts={records.texts}\n onTextsChanged={handleTextsUpdated}\n category={TextRecordCategory.General}\n searchFilter={searchFilter}\n />\n </div>\n {/* Social Records Records */}\n <div ref={socialCategoryRef} className=\"ns-mb-2\">\n <TextRecords\n initialTexts={initialRecords.texts}\n texts={records.texts}\n onTextsChanged={handleTextsUpdated}\n category={TextRecordCategory.Social}\n searchFilter={searchFilter}\n />\n </div>\n {/* Address Records */}\n <div ref={addressesCategoryRef} className=\"ns-mb-2\">\n <AddressRecords\n initialAddresses={initialRecords.addresses}\n addresses={records.addresses}\n onAddressesChanged={e => handleAddressesUpdated(e)}\n searchFilter={searchFilter}\n />\n </div>\n {/* Contenthash Records */}\n <div ref={websiteCategoryRef} className=\"ns-mb-2\">\n <ContenthashRecord\n contenthash={records.contenthash}\n onContenthashChanged={e => handleContenthashUpdated(e)}\n onContenthashRemoved={() => handleContenthashRemoved()}\n onContenthashAdded={e => handleContenthashAdded(e)}\n searchFilter={searchFilter}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","import { parseAbi } from \"viem\";\n\nexport const SET_TEXT_FUNC = \"function setText(bytes32 node, string key, string value)\";\nexport const SET_ADDRESS_FUNC = \"function setAddr(bytes32 node, uint256 coin, bytes value)\"\nexport const SET_CONTENTHASH_FUNC = \"function setContenthash(bytes32 node, bytes value)\";\nexport const MULTICALL = \"function multicall(bytes[] data)\"\n\nexport const ENS_RESOLVER_ABI = parseAbi([\n SET_TEXT_FUNC,\n SET_ADDRESS_FUNC,\n SET_CONTENTHASH_FUNC,\n MULTICALL\n]);\n","import { encodeFunctionData, Hash, namehash, parseAbi, toHex } from \"viem\";\nimport { EnsRecordsDiff } from \"./records\";\nimport { EnsAddressRecord, EnsContenthashRecord, EnsTextRecord } from \"@/types\";\nimport { SET_ADDRESS_FUNC, SET_CONTENTHASH_FUNC, SET_TEXT_FUNC } from \"@/web3\";\nimport { getCoderByCoinType } from \"@ensdomains/address-encoder\";\nimport { encode } from \"@ensdomains/content-hash\";\n\nexport const convertToMulticallResolverData = (\n name: string,\n recordsDiff: EnsRecordsDiff\n) => {\n const node = namehash(name);\n const resolverMulticallData: Hash[] = [];\n\n convertTextData(node, resolverMulticallData, recordsDiff);\n convertAddressData(node, resolverMulticallData, recordsDiff);\n convertContenthashData(node, resolverMulticallData, recordsDiff);\n return resolverMulticallData;\n};\n\nconst convertTextData = (\n node: Hash,\n resolverData: Hash[],\n diff: EnsRecordsDiff\n) => {\n const modifiedTexts: EnsTextRecord[] = [\n ...diff.textsAdded,\n ...diff.textsModified,\n ];\n modifiedTexts.forEach(text => {\n const data = encodeFunctionData({\n functionName: \"setText\",\n abi: parseAbi([SET_TEXT_FUNC]),\n args: [node, text.key, text.value],\n });\n resolverData.push(data);\n });\n\n diff.textsModified.forEach(text => {\n const data = encodeFunctionData({\n functionName: \"setText\",\n abi: parseAbi([SET_TEXT_FUNC]),\n args: [node, text.key, \"\"],\n });\n resolverData.push(data);\n });\n};\n\nconst convertAddressData = (\n node: Hash,\n resolverData: Hash[],\n diff: EnsRecordsDiff\n) => {\n const modifiedAddressMap: Record<string, EnsAddressRecord> = {};\n diff.addressesAdded.forEach(addr => {\n modifiedAddressMap[addr.coinType] = addr;\n });\n diff.addressesModified.forEach(addr => {\n modifiedAddressMap[addr.coinType] = addr;\n });\n const modifiedAddresses: EnsAddressRecord[] =\n Object.values(modifiedAddressMap);\n\n modifiedAddresses.forEach(addr => {\n const coinEncoder = getCoderByCoinType(addr.coinType);\n if (!coinEncoder) {\n throw Error(\n `Coin type is not supported: ${addr.coinType}. Cannot get an encoder`\n );\n }\n const decode = coinEncoder.decode(addr.value);\n const hexValue = toHex(decode);\n const data = encodeFunctionData({\n functionName: \"setAddr\",\n abi: parseAbi([SET_ADDRESS_FUNC]),\n args: [node, BigInt(addr.coinType), hexValue],\n });\n resolverData.push(data);\n });\n\n diff.addressesRemoved.forEach(addr => {\n const data = encodeFunctionData({\n functionName: \"setAddr\",\n abi: parseAbi([SET_ADDRESS_FUNC]),\n args: [node, BigInt(addr.coinType), \"0x\"],\n });\n resolverData.push(data);\n });\n};\n\nconst convertContenthashData = (\n node: Hash,\n resolverData: Hash[],\n diff: EnsRecordsDiff\n) => {\n if (diff.contenthashRemoved) {\n const data = encodeFunctionData({\n functionName: \"setContenthash\",\n abi: parseAbi([SET_CONTENTHASH_FUNC]),\n args: [node, \"0x\"],\n });\n resolverData.push(data);\n return;\n }\n\n let contenthash: EnsContenthashRecord | undefined = undefined;\n if (diff.contenthashModified !== undefined) {\n contenthash = diff.contenthashModified;\n } else if (diff.contenthashAdded !== undefined) {\n contenthash = diff.contenthashAdded;\n }\n\n if (contenthash !== undefined) {\n const { protocol, value } = contenthash;\n const encodedValue = `0x${encode(protocol, value)}`\n\n const data = encodeFunctionData({\n functionName: \"setContenthash\",\n abi: parseAbi([SET_CONTENTHASH_FUNC]),\n args: [node, encodedValue as `0x${string}`],\n });\n resolverData.push(data);\n }\n};\n","import { EnsRecords } from \"@/types\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { SelectRecordsForm } from \"../select-records-form/SelectRecordsForm\";\nimport { Button, Icon, Tooltip } from \"../atoms\";\nimport \"./EnsRecordsForm.css\";\nimport { convertToMulticallResolverData } from \"@/utils/resolver\";\nimport { deepCopy, getEnsRecordsDiff } from \"@/utils\";\nimport {\n useAccount,\n usePublicClient,\n useSwitchChain,\n useWalletClient,\n} from \"wagmi\";\nimport { mainnet } from \"viem/chains\";\nimport { ENS_RESOLVER_ABI } from \"@/web3\";\nimport { Address, ContractFunctionExecutionError, Hash } from \"viem\";\nimport { getSupportedAddressMap, isContenthashValid } from \"@/constants\";\n\ninterface EditRecordsFormProps {\n initialRecords?: EnsRecords;\n resolverAddress: Address;\n name: string;\n chainId?: number;\n onCancel?: () => void;\n onSuccess?: (txHash: Hash) => void;\n}\n\nconst addressMapByCoin = getSupportedAddressMap();\n\nexport const EnsRecordsForm = ({\n name,\n initialRecords,\n chainId,\n resolverAddress,\n onCancel,\n onSuccess,\n}: EditRecordsFormProps) => {\n const [records, setRecords] = useState<EnsRecords>(\n initialRecords ? deepCopy(initialRecords) : { texts: [], addresses: [] }\n );\n\n const currentChainId = chainId || mainnet.id;\n const publicClient = usePublicClient({ chainId: currentChainId });\n const { data: walletClient } = useWalletClient({ chainId: currentChainId });\n const { address, chain, isConnected } = useAccount();\n const { switchChain } = useSwitchChain();\n const [contractError, setContractError] = useState<string | null>(null);\n const [generalError, setGeneralError] = useState<{\n title: string;\n subtitle: string;\n } | null>(null);\n const [txIndicator, setTxIndicator] = useState<{\n isWaitingForWallet: boolean;\n isWaitingForTx: boolean;\n }>({\n isWaitingForTx: false,\n isWaitingForWallet: false,\n });\n\n const shouldSwitchNetwork = chain && chain.id !== currentChainId;\n useEffect(() => {\n if (!address) {\n setGeneralError({\n title: \"Not connected\",\n subtitle: \"Connect wallet to continue\",\n });\n } else {\n setGeneralError(null);\n }\n }, [address, publicClient, walletClient]);\n\n const areValidAddresses = useMemo(() => {\n for (const addr of records.addresses) {\n const validateFuc = addressMapByCoin[addr.coinType].validateFunc;\n\n if (!validateFuc) {\n throw Error(\"Validate function not present for coin:\" + addr.coinType);\n }\n\n if (addr.value?.length === 0 || !validateFuc(addr.value)) {\n return false;\n }\n }\n return true;\n }, [records.addresses]);\n\n const areValidTexts = useMemo(() => {\n for (const text of records.texts) {\n if (text.value.length === 0) {\n return false;\n }\n }\n\n return true;\n }, [records.texts]);\n\n const isChashValid = useMemo(() => {\n if (!records.contenthash) {\n return true;\n }\n\n return isContenthashValid(\n records.contenthash.protocol,\n records.contenthash.value\n );\n }, [records.contenthash]);\n\n const getInitalRecords = (): EnsRecords => {\n return initialRecords ? initialRecords : { texts: [], addresses: [] };\n };\n\n const isDiffPresent = useMemo(() => {\n const diff = getEnsRecordsDiff(getInitalRecords(), records);\n\n const {\n addressesAdded,\n addressesModified,\n addressesRemoved,\n textsAdded,\n textsModified,\n textsRemoved,\n contenthashRemoved,\n contenthashAdded,\n contenthashModified,\n } = diff;\n\n return (\n addressesAdded.length > 0 ||\n addressesModified.length > 0 ||\n addressesRemoved.length ||\n textsAdded.length > 0 ||\n textsRemoved.length > 0 ||\n textsModified.length > 0 ||\n contenthashRemoved === true ||\n contenthashModified !== undefined ||\n contenthashAdded !== undefined\n );\n }, [records, initialRecords]);\n\n const handleUpdateRecords = async () => {\n try {\n const old: EnsRecords = initialRecords\n ? initialRecords\n : { texts: [], addresses: [] };\n const diff = getEnsRecordsDiff(old, records);\n const resolverData = convertToMulticallResolverData(name, diff);\n\n setTxIndicator({ ...txIndicator, isWaitingForWallet: true });\n\n const { request } = await publicClient!.simulateContract({\n abi: ENS_RESOLVER_ABI,\n args: [resolverData],\n functionName: \"multicall\",\n address: resolverAddress,\n account: address,\n });\n\n const tx = await walletClient!.writeContract(request);\n\n setTxIndicator({ isWaitingForTx: true, isWaitingForWallet: false });\n await publicClient!.waitForTransactionReceipt({ hash: tx });\n onSuccess?.(tx);\n } catch (err) {\n console.error(err);\n if (err instanceof ContractFunctionExecutionError) {\n const _err = err as ContractFunctionExecutionError;\n setContractError(_err.details);\n } else {\n setContractError(\"Transaction failed for unknown reason!\");\n }\n } finally {\n setTxIndicator({ isWaitingForTx: false, isWaitingForWallet: false });\n }\n };\n\n const getActionButton = () => {\n const areInputsValue =\n areValidAddresses && areValidTexts && isContenthashValid;\n const style = { width: \"100%\" };\n if (!isConnected) {\n return (\n <Button\n style={style}\n size=\"lg\"\n disabled={true}\n prefix={<Icon name=\"alert-triangle\" />}\n >\n Connect Wallet\n </Button>\n );\n } else if (shouldSwitchNetwork) {\n return (\n <Button\n style={style}\n size=\"lg\"\n onClick={() => switchChain({ chainId: currentChainId })}\n >\n Switch Network\n </Button>\n );\n } else if (!areInputsValue) {\n return (\n <Tooltip content=\"Invalid inputs\" position=\"top\">\n <Button style={style} size=\"lg\" disabled={true}>\n Update\n </Button>\n </Tooltip>\n );\n } else if (!isDiffPresent) {\n return (\n <Tooltip content=\"No Records updated\" position=\"top\">\n <Button style={style} size=\"lg\" disabled={true}>\n Update\n </Button>\n </Tooltip>\n );\n } else {\n const updateBtnLoading =\n txIndicator.isWaitingForTx || txIndicator.isWaitingForWallet;\n return (\n <Button\n style={style}\n size=\"lg\"\n disabled={updateBtnLoading}\n loading={updateBtnLoading}\n onClick={() => handleUpdateRecords()}\n >\n Update\n </Button>\n );\n }\n };\n\n return (\n <div className=\"ns-edit-records-form\">\n <SelectRecordsForm\n records={records}\n onRecordsUpdated={records => setRecords(records)}\n />\n <div style={{ padding: 15, paddingTop: 0 }}>\n <div className=\"d-flex align-items-center\" style={{ gap: \"8px\" }}>\n <Button\n onClick={() => onCancel?.()}\n size=\"lg\"\n style={{ width: \"100%\" }}\n variant=\"outline\"\n >\n Cancel\n </Button>\n {/* <Button\n loading={updateBtnLoading}\n disabled={!isFormValid || updateBtnLoading}\n onClick={() => handleUpdateRecords()}\n size=\"lg\"\n style={{ width: \"100%\" }}\n >\n <Icon name=\"alert-triangle\" size={20} />\n Update\n </Button> */}\n {getActionButton()}\n </div>\n </div>\n </div>\n );\n};\n","export const useWaitForTransaction = ({ chainId: number}: {chainId: number}) => {\n\n \n\n}","import { usePublicClient, useWalletClient } from \"wagmi\"\n\nexport const useWeb3Client = ({chainId}: {chainId: number}) => {\n\n const publicClient = usePublicClient({chainId})\n const { data: walletClient } = useWalletClient({chainId})\n\n return {\n walletClient,\n publicClient\n }\n}","import React, {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport \"../styles/global.css\";\n\nexport type ThemeName = \"light\" | \"dark\";\n\nexport interface ThemeContextValue {\n theme: ThemeName;\n setTheme: (theme: ThemeName) => void;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport interface ThemeProviderProps {\n initialTheme?: ThemeName;\n useDocument?: boolean;\n children: React.ReactNode;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n initialTheme = \"light\",\n useDocument = true,\n children,\n}) => {\n const [theme, setTheme] = useState<ThemeName>(initialTheme);\n\n useEffect(() => {\n if (useDocument && typeof document !== \"undefined\") {\n const root = document.documentElement;\n root.setAttribute(\"data-theme\", theme);\n return () => {\n root.removeAttribute(\"data-theme\");\n };\n }\n }, [theme, useDocument]);\n\n const value = useMemo<ThemeContextValue>(\n () => ({\n theme,\n setTheme,\n toggleTheme: () => setTheme(t => (t === \"light\" ? \"dark\" : \"light\")),\n }),\n [theme]\n );\n\n if (useDocument) {\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n }\n\n return (\n <ThemeContext.Provider value={value}>\n <div data-theme={theme} className=\"ns-reset\">\n {children}\n </div>\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextValue => {\n const ctx = useContext(ThemeContext);\n if (!ctx) throw new Error(\"useTheme must be used within ThemeProvider\");\n return ctx;\n};\n"],"names":["Icon","__iconNode","icons","LucideIcons.MapPin","LucideIcons.Mail","LucideIcons.Image","LucideIcons.CircleUser","LucideIcons.CircleAlert","CheckCircle","AlertTriangle","XCircle","LucideIcons.CircleFadingPlus","TransactionState","ContenthashProtocol","isBytes","anumber","bytesToHex","hexToBytes","u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","sha256","sha512_256","_0n","_1n","isBytes_","bytesToHex_","abytes_","hexToBytes_","concatBytes_","_2n","_3n","_4n","_7n","abool","abytes","randomBytesWeb","randomBytes","hmac","nobleHmac","ripemd160","ripemd160n","alphabet","base32","sha256n","name","coinType","prefix","hrp","limit","p2pkhVersions","p2shVersions","bytesToNoPrefixHex","noPrefixHexToBytes","sha512_256n","u64.rotr32H","u64.rotr32L","u64.fromBig","blake2b","b2b","dotType","addressLength","length","checksumLength","formats[\"eth\"]","isAddress","base","equals","basex","decode","encode","varint","varint.encodingLength","varint.encodeTo","varint.decode","equalBytes","Digest.create","Digest.equals","Digest.decode","Digest.Digest","multihashDecode","createDigest","TextRecordCategory","RecordsSidebarItem","records"],"mappings":"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CAAC;AACnC,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAY,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,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G,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AAC/B,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC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E,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACvE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC1E,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACxE,IAAI,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACvE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AACzE,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC1E,IAAI,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU;AACxE,I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E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxD,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AACxD,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxD,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,E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tD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAA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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234]}
|